Professional Documents
Culture Documents
4
Procese
27 octombrie 2008
Motto
I'm a bit like an operating system really... "multitasking" between these two OHPs, "interrupting" you, ... "sending you to sleep"...
John Bates
27.10.2008
Single-user/Multi-user
Mai muli utilizatori n acelai sistem -> mai multe instane de programe pentru a fi rulate CPU
Context de execuie
27.10.2008
Sisteme multiprocesor
Este posibil execuia simultan a mai multor instane ale unor programe (a mai multor contexte de execuie) pe un sistem de calcul? Sisteme multiprocesor
folosirea sistemelor de operare multiuser existena simultan a mai multor instane de execuie
Cte programe se pot executa simultan pe un sistem multiprocesor? De ce, aparent, ruleaz mai multe instane de programe pe un sistem uniprocesor?
27.10.2008 5
Windows
C:\WINDOWS\system32>dir notepad.exe Volume in drive C has no label. Volume Serial Number is D050-E9E7 Directory of C:\WINDOWS\system32 08/04/2004 04:07 AM 1 File(s) 0 Dir(s) 69,120 notepad.exe 69,120 bytes 453,902,336 bytes free
6
27.10.2008
Linux
razvan@anaconda:~$ whereis vim vim: /usr/bin/vim.basic /usr/bin/vim [...] razvan@anaconda:~$ file /usr/bin/vim.basic /usr/bin/vim.basic: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), for GNU/Linux 2.4.1, stripped razvan@anaconda:~$ ls -l /usr/bin/vim.basic -rwxr-xr-x 1 root root 1384232 Aug 29 14:02 /usr/bin/vim.basic
27.10.2008 7
Procese Abstractizare fundamental n SO (la fel ca i fisierul) Un program aflat n execuie (instan a unui program) program vs. proces
program
entitate pasiv executabil din sistemul de fiiere (aflat pe disc)
proces
entitate activ instruciunile i datele programului se ncarc n memorie i sunt rulate de CPU
27.10.2008 8
Procese (cont.)
Un proces este programul cruia i s-a asociat un contex de execuie Denumit i task sau job
27.10.2008
Planificarea proceselor
Situaie
un singur procesor (sau numr limitat de procesoare) mai multe procese (task-uri)
Observaie: dispozitivele periferice sunt mult mai lente accesarea unui astfel de dispozitiv dureaz mult
Multiprogramming
Funcionare
se alege pentru rulare un proces P1 cnd procesul P1 acceseaz un dispozitiv periferic, se pune ntro stare special (sleep, blocat) se planific alt proces P2 non-blocat totul se reia (salt la primul pas) pn cnd nu mai avem procese
Avantaje:
mrirea eficienei
Dezavantaje
lipsa interactivitii
27.10.2008 11
Multitasking cooperativ
Se asociaz fiecarui proces o cuant de timp (slice)
Time slice timp n care procesul va rula pe procesor Se partejeaz timpul procesorului time-sharing
Dup expirarea cuantei de timp, procesul va permite voluntar altui proces s ruleze pe procesor Avantaje:
interactivitate
Dezavantaje:
un proces agat (hung, crashed) poate duce la nghearea ntregului sistem
27.10.2008 12
Multitasking preemptiv
Evoluia multitasking-ului cooperativ Folosit preponderent n SO moderne Multitasking cooperativ vs. multitasking preemptiv
cel preemptiv foreaz procesul s cedeze procesorul la expirarea cuantei de timp cooperativ = cedeaz voluntar controlul procesorului; preemptiv = cedeaz obligatoriu controlul procesorului
Maximum de interactivitate Denumirea actual de multitasking se refer la un sistem time-sharing, multitasking preemptiv
27.10.2008 13
Schimbare de context
Context switch Schimbarea execuiei unui proces cu un altul pe procesor Cnd apare un context switch?
cnd un proces moare cnd un proces iniiaz comunicare cu un dispozitiv periferic cnd unui proces i expir cuanta de timp
Ierarhia de procese
Identificatorul procesului - PID (process ID) Orice proces are un proces parinte (i numai unul) Un proces este creat prin intermediul unui alt proces Ierarhie de procese n Unix Procesul init rdcina ierarhiei
27.10.2008 15
Procese importante
UNIX
init: printele tuturor proceselor; responsabil cu pornirea proceselor daemon i cu stabilirea contextului de lucru pentru utilizatori swapper: mutarea proceselor din memorie pe disc (swapping)
Windows
smss.exe session manager; primul proces creat; stabilirea contextului pentru utilizatori winlogon.exe logon process; se ocup cu login/logout lsass.exe local security authentication server service control manager pornirea, oprirea i gestionarea serviciilor
27.10.2008 16
PS C:\Documents and Settings\razvan> ps firefox Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) ------- -------------- ---------318 25 36584 52924 164 14.95 PS C:\Documents and Settings\razvan> ps power* Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) ------- -------------- ---------674 70 110888 5036 315 391.47 558 15 68028 63388 571 4.64 PS C:\Documents CommandType ----------Alias 27.10.2008
Id -1500 496
Definition ---------Get-Process 18
27.10.2008
20
Utilitarul top
27.10.2008
22
27.10.2008
23
Fiierele obiect conin aceleai informaii (seciuni) Un fiier executabil este obinut prin legarea (linking) mai multor fiiere obiect
27.10.2008 24
Date dinamice
heap pentru alocare dinamica (malloc) stiv alocarea variabilelor locale funciilor
procfs
Sistem de fiiere virtual informaiile se gsesc n memorie Montat n /proc Folosit de multe utilitare de baz
razvan@anaconda:~$ dpkg -L procps /bin/kill /bin/ps [..] /usr/bin/uptime /usr/bin/tload /usr/bin/free /usr/bin/top /usr/bin/vmstat /usr/bin/watch /usr/bin/skill /usr/bin/pmap /usr/bin/pgrep /usr/bin/slabtop
27.10.2008 26
procfs (cont.)
Informaiile despre un proces sunt grupate ntr-un director dat de pid-ul procesului
anaconda:~# ls /proc/ 1 2693 2770 3 10 2694 2798 3015 32398 32488 3377 3379 853 854 driver execdomains modules mounts:
Un proces este creat din cadrul unui proces existent n Unix, init este printele tuturor proceselor Fazele crerii
copierea procesului printe (cu imaginea acestuia) alocarea resurselor necesare pentru noul proces (pid, tabel de fiiere, zone de memorie etc.) ncrcarea executabilului asociat (imaginea procesului) actualizarea resurselor (zone de memorie, fiiere deschise) ulterior se planific procesului
27.10.2008
28
Cnd un proces moare, se terge fisierul executabil asociat? Cnd moare un proces?
se ajunge la sfaritul zonei de cod a executabilului se apeleaz exit (sau o funcie asemntoare) condiii anormale (abnormal termination): primirea unui semnal
27.10.2008
29
Semnale
Mecanisme prin care se indic unui proces
ncheierea unei operaii sau atingerea unei stri (notificare) o condiie deosebit n funcionare (ex. accesarea unei zone invalide de memorie)
Semnalele Unix
razvan@anaconda:~$ kill l 1) SIGHUP 2) SIGINT 3) 5) SIGTRAP 6) SIGABRT 7) 9) SIGKILL 10) SIGUSR1 11) 13) SIGPIPE 14) SIGALRM 15) 18) SIGCONT 19) SIGSTOP 20) 22) SIGTTOU 23) SIGURG 24) 26) SIGVTALRM 27) SIGPROF 28) 30) SIGPWR 31) SIGSYS
27.10.2008
30
Semnale n Linux
Comanda kill poate fi folosit pentru transmiterea unui semnal
denumire nefericit (nu toate semnalele termin procesul)
razvan@anaconda:~$ ps PID TTY TIME 10388 pts/2 00:00:00 10422 pts/2 00:00:00 10424 pts/2 00:00:00 razvan@anaconda:~$ kill [1]+ Killed razvan@anaconda:~$ ps PID TTY TIME 10388 pts/2 00:00:00 10425 pts/2 00:00:00 razvan@anaconda:~$ CMD bash netcat ps -KILL 10422 netcat CMD bash ps
memorie partajat
zone de memorie partajate ntre mai multe procese Comunicaie facil (scriere/citire n/din memorie)
sockei
comunicaia prin reele de calculatoare
27.10.2008 32
pipe operatorul |
Form de baz de comunicare ntre procese
ieirea unei comenzi este redirectat spre intrarea celei de-a doua comenzi
anaconda:~# ps -e | grep bash 32737 pts/1 00:00:00 bash 794 ? 00:00:00 bash 854 pts/1 00:00:00 bash anaconda:~# ps -e | wc -l 118 anaconda:~# ps -e | head -n 5 PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 migration/0 3 ? 00:00:00 ksoftirqd/0 4 ? 00:00:00 events/0
27.10.2008 33
Rulare n fundal
Fundal (background) sau prim plan (foreground) Rulare n background nu se pot primi comenzi de la utilizator
se folosete operatorul & procesul continu s ruleze
anaconda:/# [1] 1169 anaconda:/# 1169 pts/1 anaconda:/# 1169 root anaconda:/# du hs du -hs & ps -e | grep du 00:00:00 du top -b -n 1 | grep du 18 0 1624 564 fg
356 R
0.0
0.2
0:00.80 du
Comanda fg aduce procesul n foreground Folosirea CTRL-Z (SIGSTP) foreaz procesul n background (fr a rula)
27.10.2008 34
Daemoni
Disk And Execution MONitor (backronym) Proces care ruleaz n background
detaat de terminalul de control orice daemon are ca printe init
Numele se termin, de obicei, n d (sshd, syslogd, httpd, etc.) Cum se interacioneaz cu un daemon?
semnale fiiere de configurare
27.10.2008 35
Daemoni (cont)
Pe Windows, echivalentul daemon-ului este serviciul: Control Panel -> Administrative Tools -> Services Intreaciune cu daemon-ii n Debian/Ubuntu scripturile din /etc/init.d
anaconda:/# /etc/init.d/apache stop Stopping apache 1.3 web server.... anaconda:/# /etc/init.d/apache start Starting apache 1.3 web server.... anaconda:/# /etc/init.d/apache restart Restarting apache 1.3 web server....
Swapping
Ce se ntmpl cnd memoria este insuficient (prea multe procese)?
transfer de pagini ntre memorie i disc swap
n Windows se folosete partiia de sistem n Linux, se obinuiete prezena unei partiii de swap dedicate
#
mkswap /dev/sda2
mkswap file.swap
37
Swapping (cont.)
evacuare
RAM
swap
proces nou
RAM
swap
proces nou
RAM
swap
27.10.2008
38
Cuvinte cheie
proces program/executabil context de execuie schimbare de context context switch cuant de timp multitasking multiuser planificatorde proces pid Init ierarhie de procese ps Task manager Get-Process (PowerShell) top comunicaie ntre procese semnale kill foreground background daemon serviciu swapping
39
27.10.2008
Link-uri
27.10.2008
The End
27.10.2008
41