1 of 50

Cursul #03

Procese

1

2 of 50

2

Evenimentele următoare

  • Workshopuri Keysight
    • Diferite teme tehnice
    • Laboratoare în stilul USO unde vor fi cunoștințe de containere, 5G, rețelistică
    • Pizza și suc gratis
    • 16 octombrie
  • OmniOpenCon
    • Conferință despre proiecte OpenSource
    • Puteți vorbi cu dezvoltatorii la proiecte
    • Workshopuri și prezentări tehnice
    • Link înregistrare: https://omniopencon.org
    • 17-19 octombrie

3 of 50

Recapitulare

When looking for an old file...

3

4 of 50

Multitasking:

A polite way of telling someone you haven't heard a word they said

4

5 of 50

Suport de curs

  • Utilizarea Sistemelor de Operare
    • Capitolul 4 - Procese

5

6 of 50

Ce este un proces ?

  • Proces = acțiunea utilizatorului tradusă în logica mașinii

6

7 of 50

Ce este un proces ?

  • Utilizatorul comandă o acțiune care declanșează procese
  • Procesele sunt aplicații ale SO ce pun în practică solicitarea utilizatorului:
    • Procesele sunt legate de utilizatorul care le-a inițiat
    • Procesele folosesc resurse ale sistemului (procesor, memorie, spațiu pe disc etc)
  • Exemplu: init, bash, firefox

7

8 of 50

De ce ?

  • Concept fundamental în sistemele de operare prin care sunt definite acțiunile
  • Procesul poate fi numit aplicație, task, job sau, nu foarte corect, „program”
    • Programul este, tehnic, executabilul din care se naște procesul
    • Procesul ia naștere dintr-un executabil după ce se încarcă executabilul în memorie

8

9 of 50

Procese în execuție

9

10 of 50

Lansarea unui proces

10

11 of 50

La ce bun ?

  • Utilizator
    • Depanarea sistemului prin examinarea proceselor
    • Procesele pot cauza probleme prin consumul excesiv de resurse
    • Identificarea proceselor malițioase
  • Dezvoltator
    • Iluzia de multitasking
    • Proiectarea unor aplicații eficiente

11

12 of 50

Ce poate face un proces ?

  • Ce poate face o rachetă de tenis ?

12

13 of 50

Ce poate face un proces ?

  • Orice proces aparține unui utilizator
  • Depinde ce privilegii și permisiuni are pe resurse
    • Un proces poate crea un fișier, sau nu
    • Un proces poate trimite pachete pe rețea, sau nu
    • Privilegiile unui proces sunt date de utilizator

13

14 of 50

Cum creează un utilizator procese ?

  • Deschide aplicații
  • Dublu click în GUI
  • Rulează o comandă în linia de comandă
  • Alt + F2 (Linux) sau Buton Windows + R (Windows)
  • La autentificare se pornesc procesele de startup
    • Interfața grafică pentru GUI
    • Shell-ul pentru CLI

14

15 of 50

Tipuri de procese

  • Interactive
    • Declanșate de un utilizator prin I/O
  • Neinteractive sau daemon

15

16 of 50

Interacțiune terminal

16

17 of 50

Aplicații vs. procese

  • Unele aplicații pot fi compuse din mai multe procese:
    • Browsere web (Chrome, Firefox)
    • Server web (servirea cererilor din rețea)
    • Terminal (procese shell)

17

18 of 50

Resursele proceselor

  • Un identificator la nivelul sistemului
    • PID = process identifier
  • Memoria: stochează instrucțiunile executabilului (programului) și datele prelucrate
  • Procesorul: execută instrucțiunile
  • Spațiu pe disc, dacă lucrează cu fișiere
  • Dispozitive de I/O: placă de rețea, USB devices

18

19 of 50

Folosirea resurselor

19

20 of 50

Resursele proceselor

  • Procesele folosesc resursele SO
  • Aplicații multiproces
    • Se realizează o partajare a proceselor
  • Integritatea sistemului
    • Un proces nu poate corupe alt proces
  • Procese care accesează o resursă comună
    • Accesarea ei ordonată

20

21 of 50

Resursele proceselor

  • SO este responsabil de alocarea echilibrată a resurselor
    • Un proces să nu consume prea multe resurse de memorie, procesor, etc.

21

22 of 50

Monitorizarea proceselor

  • ps, top, htop
  • Task Manager (Windows)

22

23 of 50

23

24 of 50

Procese peste CPU

24

25 of 50

Instrucțiuni și atribute

  • UID: identifică utilizatorul care deține procesul
  • PID: identificatorul unic al procesului
    • Nu se poate schimba
  • Instrucțiuni / cod:
    • Memorate la crearea unui proces
    • Se execută la rularea unei comenzi
  • Atributele identifică un proces și decid resursele utilizate

25

26 of 50

Stările proceselor

26

27 of 50

Utilitare procese

  • Afișarea informațiilor despre procesele active din sistem: ps, pgrep, pidof, pstree, lsof
  • Monitorizarea sistemului: top, htop
  • Investigarea amănunțită a proceselor: ltrace, strace, ptrace
  • uptime - afișează de cât timp funcționează sistemul
  • pidof – afișează PID-ul procesului cu numele specificat
  • Utilitarele ce lucrează cu procese își iau informațiile din /proc, din procfs

27

28 of 50

Utilitarul ps

  • Utilitarul principal pentru afișarea informațiilor despre procese
  • Starea proceselor:
    • Scheduled
    • Sleeping
  • top
  • Prioritatea proceselor – parametrul nice

28

29 of 50

Parametrii comenzii ps

  • Afișare detaliată: ps aux
  • a = arată procesele tuturor utilizatorilor
  • u = afișează deținătorul procesului
  • x = afișează și procesele ce nu aparțin terminalului
  • Vizualizarea ierarhiei de procese: ps -H

29

30 of 50

Ierarhizarea proceselor

  • Crearea unui proces printr-un:
    • Fișier executabil (loading)
    • Proces părinte (unul singur)
  • Procesul init – rădăcina ierarhiei de procese
  • Shell: proces care creează alt proces (Windows Explorer, Bash)
  • Afișarea ierarhiei de procese: comanda pstree

30

31 of 50

Ierarhia de procese

31

32 of 50

Procesul init

  • Rădăcina ierarhiei de procese
  • Primul proces al sistemului
    • PID 1
  • Pornește serviciile sistemului & procesele de bază
    • Shell-uri
  • Adoptă procesele orfane

32

33 of 50

fg & bg

  • Procesul foreground
    • Controlează intrarea standard
    • Poate exista doar unul singur
  • Procese background
    • Nu mai are acces la intrarea utilizatorului
    • Pot exista mai multe procese de acest fel
    • Două stări: running, suspended
    • Operatorul & trimite procesul în background
    • Ctrl + Z
    • Comanda job – starea procesului

33

34 of 50

fg & bg

34

35 of 50

Procese și fișiere

  • Accesul către orice fișier se realizează printr-un proces
  • Când un proces deschide un fișier primește un handle (mâner) către acel fișier
    • O intrare în tabelul descriptorilor de fișiere
    • Descriptorul de fișiere identifică fișierul pe care îl rulează un proces
  • Un proces poate deschide un număr finit de fișiere (prevenirea atacurilor tip Denial of Service)
  • lshw > ls.out – redirectarea ieșirii standard

35

36 of 50

Descriptori de fișiere

36

37 of 50

Terminarea proceselor

  • Un proces este terminat (distrus) atunci când:
    • Ajunge la sfârșitul zonei de execuție
    • Este terminat de utilizator sau distrus de un alt proces
    • Se apelează exit sau o funcție similară
    • Efectuează o acțiune nevalidă
      • Abnormal termination, generarea unei excepții
  • Utilitare: kill, pkill, killall

37

38 of 50

Ce înseamnă terminare

  • La terminarea unui proces:
    • Toate informațiile aferente dispar
    • Resursele (memorie, fișiere) sunt eliberate
  • Când un proces moare, se șterge fișierul executabil asociat ?

38

39 of 50

Exemple

  • Listă semnale UNIX

39

stud@uso:~$ kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL

5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE

9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2

13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD

18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN

22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO

30) SIGPWR 31) SIGSYS

40 of 50

Înlănțuirea proceselor

  • Redirectare din fișier (< și >)
  • Înlănțuirea de comenzi:
    • Înlănțuire necondiționată (;)
    • Sau (||)
    • Și (&&)
  • Pipe-uri (|)
    • Sunt folosite la transferul de informație de la o comandă la alta
    • One-linere

40

41 of 50

Interacțiuni

  • Procesele interactive:
    • Primesc date de intrare de la utilizator
    • Shell – terminal – interacțiunea cu utilizatorul
  • Procese neinteractive (batch)
    • Sunt folosite la transferul de informație de la o comandă la alta

41

42 of 50

Daemoni

  • Sunt detașați de terminal
  • Oferă un anumit serviciu în sistem
  • Au ca părinte procesul init
  • Exemplu: atd
  • Daemonizarea unui proces:
    • nohup
    • disown

42

43 of 50

De ce „daemoni”?

According to Fernando J. Corbato who worked on Project MAC in 1963 his team is the first to use the term daemon. The use of the term daemon was inspired by Maxwell's daemon, in physics and thermodynamics as an imaginary agent which helped to sort molecules.

„We fancifully began to use the word daemon to describe background processes which worked tirelessly to perform system chores.”

https://stackoverflow.com/questions/33690277/why-are-daemons-called-daemons

43

44 of 50

Daemonii ca metaforă

  • Daemoni – inaccesibili prin I/O
  • Dacă procese = gânduri & emoții, daemoni = procese psihologice sub-conștiente sau inconștiente ?

44

45 of 50

Exemple

  • nohup – redirectează rezultatul procesului daemonizat într-un fișier (nohup.out)

  • disown – oprește procesul și continuă execuția instrucțiunilor: disown JobID

45

stud@uso:~# kill -SIGINT 400

46 of 50

Operating Systems Concepts

  • editia a 9-a, 2013
  • editia a 10-a, 2020
  • Silberschatz, Galvin, Gagne
  • Una dintre cele mai renumite cărți de programare în Unix
  • Acopera foarte bine subiectele de gestiunea proceselor si gestiunea memoriei

46

47 of 50

Donald Knuth

  • The Art of Computer Programming
  • analiza algoritmilor
  • autorul TEX, METAFONT
  • umor profesional

47

48 of 50

  • International Business Machines Corporation
  • fondata, ca nume, in 1924
  • una dintre cele mai mari companii din lume
  • unul dintre cele mai recunoscute brand-uri
  • hardware (servere), software, servicii
  • Blue Gene supercomputers

48

49 of 50

DTrace

  • dynamic tracing
  • analiza dinamica (in timp real) a aplicatiilor si sistemului de operare
  • aparut ın 2005, Sun Microsystems
  • ruleaza pe Solaris, Mac OS X si *BSD
  • cand a fost apelata o functie, cu ce argumente
  • ,,scriptat”’ cu ajutorul unui limbaj de programare
  • a primit numeroase premii de inovatie
  • modul de kernel portat pe Linux
  • echivalent pe Linux este utilitarul SystemTap (stap)

49

50 of 50

Cuvinte cheie

  • Resurse
  • Instrucțiuni
  • Atribute
  • ps
  • top
  • Shell
  • init
  • fg
  • fg

50