Documente Academic
Documente Profesional
Documente Cultură
- Curs 4 27.10.2005
2.1 Procese Conceptul central n orice SO este procesul. Acesta este o abstractizare a unui program n execuie ntr-un sistem multiprogramat, CPU comut de la un program la altul, executndu-l pe fiecare un timp limitat. Astfel n orice moment de timp CPU ruleaz un singur program Apare noiunea de pseudoparalelism, n contrast cu paralelismul hard al sistemelor multiprocesor
2.1.1 Modelul proces n acest model, orice component soft executabil este organizat ntr-un numr de procese secveniale Comutarea rapid a CPU de la un proces la altul se numete multiprogramare Fiecare proces i are propriul contor logic de program. Acesta este ncrcat n contorul fizic de program n momentul n care CPU execut respectivul proces. Cnd execuia procesului se termin, contorul fizic este salvat n cel logic Diferena dintre proces i program: un proces reprezint o activitate de un anumit fel. El conine un program, date de I/O i o stare.
Utilizarea Sistemelor de Operare 3
2.1.2 Crearea proceselor n SO complexe este necesar o modalitate de a crea i termina procesele n funcie de necesitile din timpul funcionrii Exist patru evenimente principale ce determin crearea proceselor:
Iniializarea sistemului Execuia unui apel de sistem pentru crearea unui proces de ctre un proces n execuie O cerere a utilizatorului pentru crearea unui nou proces Iniierea unui job n fundal
2.1.2 Crearea proceselor (2) La iniierea SO sunt create mai multe procese:
Procese de prim-plan (foreground) Procese de fundal (background). Procesele de fundal care se ocup de diverse activiti (e-mail, pagini Web) se numesc demoni.
Crearea de procese este util atunci cnd sarcina de ndeplinit poate fi descompus n mai multe procese nrudite, independente, care interacioneaz n UNIX exist un singur apel de sistem pentru crearea de procese noi: fork. Acesta creeaz o clon exact a procesului apelant. Noul proces ruleaz apoi execve pentru a-i schimba imaginea memoriei sau a rula un nou program
Utilizarea Sistemelor de Operare 5
Crearea proceselor n Windows n Win32 exist o singur funcie, CreateProcess, care creaz un nou proces i ncarc un nou program n acesta. Att n UNIX ct i n Windows, procesele printe i copil au spaii de adrese diferite. Nu se partajeaz memorie care s se poate scrie.
2.1.3 Terminarea proceselor n general un proces se termin datorit uneia dintre condiiile:
Ieire normal (terminare voluntar) Ieire cu eroare (terminare voluntar) Eroare fatal (terminare voluntar) Terminare de ctre un alt proces (terminare involuntar)
2.1.4 Ierarhii de procese n UNIX, atunci cnd un proces creeaz un altul, devine printele acestuia din urm. Procesul copil astfel creat poate deveni printe la rndul su, crendu-se n acest fel o ierarhie de procese. n cazul UNIX, rdcina ierarhiei de procese este procesul init. Acesta este prezent n imaginea de boot i este pornit la iniializarea sistemului. n Windows nu exist conceptul de ierarhie de procese. Procesul printe primete un descriptor de fiier (handle) cu care poate controla procesul copil. Acest descriptor poate fi ns transmis altui proces, invalidnd astfel ierarhia
Utilizarea Sistemelor de Operare 9
2.1.5 Strile unui proces Un proces se poate afla n una din strile:
n execuie (folosete CPU n acel moment) Gata de execuie (poate fi executat, ns este oprit pentru a lsa un alt proces s se execute) Blocat (nu se poate executa pn cnd nu apare un eveniment extern)
Gata de execuie
Procesul se blocheaz n ateptarea datelor de intrare Modulul de planificare alege un alt proces Modulul de planificare alege acest proces Datele de intrare devin disponibile
10
2.1.6 Implementarea proceselor Pentru a implementa modelul proces, SO folosete o tabel de procese, care conine informaiile despre proces ce trebuiesc salvate atunci cnd procesul trece n una din cele trei stri posibile Rularea secvenial a mai multor procese pe un singur CPU are la baz un vector de ntreruperi. Acesta conine adresele rutinelor de tratare a diferitelor ntreruperi asociate dispozitivelor de I/O
11
Tabela de procese
Proces
Regitri PC, PSW, SP Starea procesului Prioritate Parametrii de progr. ID proces ID proces printe ID grup proces Semnale Timp de pornire proces Timp utilizare CPU Timp utilizare de ctre copii Alarme
Utilizarea Sistemelor de Operare
12
2.2.1 Modelul firelor de execuie Modelul proces se bazeaz pe dou concepte diferite: gruparea resurselor i execuia. Un proces are
Un spaiu de adrese (textul programului, date) i alte resurse (fiiere deschise, procese copil, etc.) Un fir de execuie (thread) care conine un contor program, registre, o stiv i o stare
Fire de execuie multiple Un proces poate avea mai multe fire de execuie, caz n care acestea partajeaz spaiul de adrese, fiierele deschise, etc. (multithreading) Cnd un proces cu mai multe fire de execuie ruleaz pe un sistem cu un singur CPU, CPU comut rapid ntre ele crend impresia de paralelism Nu exist protecie ntre datele partajate de firele de execuie asociate unui aceluia i proces deoarece:
Este imposibil Nu ar trebui sa fie nesesar
Utilizarea Sistemelor de Operare 14
Comune (la nivel de proces) Spaiul de adrese Variabile globale Fiiere deschise Procese copii Alarme armate Semnale
16
Desfurarea mai multor activiti simultan asupra aceluiai obiect electronic Aduc un ctig de performan mai ales n cazul unui numr mare de operaii cu dispozitivele de I/E Sunt folositoare n cazul sistemelor multiprocesor
17
Funcionalitatea firelor de execuie poate fi implementat n spaiul utilizator sau n kernel n cazul n care pachetul firelor de execuie este pus n ntregime n spaiul utilizator, kernelul nu tie nimic de existena lor i gestioneaz doar procese cu un singur fir de execuie Pentru a le gestiona n spaiul utilizator, fiecare proces are nevoie de o tabel de fire de execuie
18
Avantaje:
Firele de execuie n spaiul utilizator pot fi implementate n SO care nu suport fire de execuie Pentru gestiunea firelor de execuie nu sunt necesare capcane, comutri de context, golirea cache-ului, etc
Dezavantaje:
Apelurile de sistem blocante vor bloca ntreg procesul, deci i celelalte fire de execuie n cazul apariiei unui page fault situaia este similar cu cea de la apelurile blocante Daca un fir nu renun la folosirea CPU n mod voluntar, nici un altul din cadrul procesului nu poate rula
Utilizarea Sistemelor de Operare 19
n kernel se gsete o tabel de fire care menine evidena tuturor firelor din sistem. Nucleul menine i evidena proceselor La blocarea unui fir, kernelul alege ntre a rula un alt fir din cadrul aceluiai proces, sau unul dintr-un alt proces Costul crerii i distrugerii firelor n kernel este ridicat. De aceea unele SO recicleaz firele de execuie Exist implementri hibride, folosind fire la nivelul kernel-ului care apoi sunt multiplexate n spaiul utilizator
Utilizarea Sistemelor de Operare 20
10
2.2.6 Fire de execuie pop-up Considernd un sistem ce trebuie s trateze mesajele sosite, exist dou posibiliti:
Un proces sau fir de execuie este blocat pe un apel de sistem receive. La sosirea mesajului, el l va accepta i procesa n cazul sosirii mesajului, sistemul creeaz un nou fir de execuie (fir de execuie pop-up).
Crearea acestuia este mai rapid dect restaurarea unuia deja existent Noul fir de execuie va procesa mesajul Este de preferat ca firul de tip pop-up s fie plasat n spaiul kernel (uurin mai mare n implementare, execuie mai rapid, acces la dispozitivele de I/O). Dezavantajul este dat de faptul c apariia unei erori poate cauza probleme n spaiul kernel
Utilizarea Sistemelor de Operare 21
2.3 Comunicarea interprocese Deseori procesele trebuie s comunice unele cu altele Apar trei probleme:
Cum poate un proces s transmit informaie ctre altul Evitarea afectrii reciproce a execuiei activitilor critice (de ex. alocarea de memorie) Serializarea corect a execuiei proceselor
22
11
2.3.1 Condiii de curs Situaiile n care dou sau mai multe procese citesc sau scriu date partajate li rezultatul final depinde de cine se execut i cnd sunt numite condiii de curs. Exemplu:
Procesul A vrea sa tipreasc un fiier. El citete prima poziie liber din directorul de tiprire (de ex. 7) i o memoreaz. n acest moment el este oprit i CPU comut la procesul B Procesul B vrea si el s tipreasc un fiier. El citete aceeai valoare 7 i n dreptul ei trece numele fiierului. n acest moment, controlul este redat lui A A va suprascrie fiierul lui B cu propriul fiier deoarece a reinut aceeai prim poziie liber
Utilizarea Sistemelor de Operare 23
2.3.2 Regiunile critice (1) Partea de program n care memoria partajat este accesat se numete regiune critic sau seciune critic. Pentru a evita regiunile critice, trebuie asigurat faptul c dac un proces folosete date partajate, celelalte procese nu vor putea face acest lucru (excludere mutual) Dac procesul A se afl n regiunea lui critic, i procesul B ncearc sa acceseze date partajate cu A, atunci B este blocat pn cnd A iese din regiunea critic
24
12
2.3.2 Regiunile critice (2) Pentru ca dou procese paralele s coopereze corect i eficient, folosind date partajate, trebuie ndeplinite condiiile:
Oricare dou procese nu se pot afla simultan n regiunile lor critice Nici o presupunere nu se poate face asupra vitezei sau numrului de CPU-uri Nici un proces care ruleaz n afara regiunii lui critice nu poate bloca alte procese Nici un proces nu trebuie s atepte la infinit pentru a intra n regiunea lui critic
25
13
Variabile zvor
Exist o variabil partajat, variabil zvor, care are valoarea 0 dac nici un proces nu se afl n regiunea critic i 1 dac exist un astfel de proces Ideea conine ns exact problema aprut la directorul de tiprire:
un proces citete valoarea 0, i nainte de a o nlocui cu 1 un altul este activat Cel de-al doilea proces citete i el 0 i modific valoarea variabilei n 1 Cnd primul proces este continuat, se va afla n acelai timp n regiunea critic cu al doilea deoarece verificarea valorii variabilei s-a fcut deja
27
Alternarea strict
Se folosete o variabil de tip integer, turn, care decide al cui i este rndul s intre n regiunea critic
while(TRUE) { while(turn!=0); critical_region(); turn=1; noncritical_region(); } while(TRUE) { while(turn!=1); critical_region(); turn=0; noncritical_region(); }
Verificarea n continuu a unei variabile pn cnd are o valoare dorit se numete ateptare ocupat. Ea devine folositoare doar atunci cnd probabilitatea ca ateptarea s fie scurt este rezonabil Dezavantaj: programul din dreapta este blocat atta timp ct cel din stnga se afl n regiunea noncritic
Utilizarea Sistemelor de Operare 28
14
nainte de a folosi variabilele partajate, fiecare proces apeleaz enter_region cu numrul su de ordine ca parametru (0 sau 1). La terminare apeleaz leave_region cu acelai parametru
Utilizarea Sistemelor de Operare 29
2.3.4 Sleep i Wakeup Unele dintre cele mai simple primitive de comunicare interprocese este perechea sleep i wakeup. sleep blocheaz apelantul pn cnd un alt proces l trezete. wakeup are un singur parametru, procesul ce trebuie trezit Problema Productor-Consumator:
Dou procese mpart o zon de memorie tampon comun. Unul dintre ele pune date n zona tampon (productorul), iar cellalt le scoate (consumatorul) Cnd productorul vrea s introduc un element n zona tampon i aceasta este plin, l trezete pe consumator i se suspend Cnd consumatorul nu mai are elemente de scos, l trezete pe productor i se suspend
Utilizarea Sistemelor de Operare 30
15
2.3.5 Semafor Un semafor este o variabil de tip ntreg care contorizeaz numrul de semnale de trezire salvate pentru folosire n viitor (Dijkstra, 1965) Asupra unui semafor sunt posibile dou operaii: down. Dac semafor > 0, valoarea semaforului fa vi
decrementat. Dac semafor == 0, procesul va fi suspendat fr a se termina operaia down
up. Dac exist procese suspendate care ateapt terminarea operaiei down pe acel semafor, atunci
unul dintre ele va termina operaia. Dac nu exist astfel de procese, semafor va fi incrementat
Verificarea valorii, modificarea acesteia i suspendarea / trezirea procesului sunt efectuate ca o singur aciune atomic, indivizibil
Utilizarea Sistemelor de Operare 31
2.3.6 Mutex (1) Un mutex este o variabil care se poate afla n una dintre cele dou stri posibile: deschis sau nchis. Este o variant mai simpl de semafor Pentru reprezentarea ei se folosete n practic un ntreg: 0 = deschis, celelalte valori = nchis Cnd un fir de execuie (proces) trebuie sa acceseze o regiune critic, efectueaz un apel mutex_lock. Dac mutex-ul este deschis, firul de execuie este liber s intre n regiunea critic. Dac mutex este nchis, firul de execuie apelant este suspendat pn cnd firul de execuie aflat n regiunea critic a terminat i efectuat apelul mutex_unlock
Utilizarea Sistemelor de Operare 32
16
2.3.6 Mutex (2) Dac mai multe fire de execuie sunt blocate la mutex, este ales aleator cel cruia i va fi permis s obin nchiderea apelului mutex_lock
33
2.3.7 Monitoare Un monitor reprezint o primitiv de sincronizare de nivel nalt. El este o colecie de proceduri, variabile i structuri de date, toate grupate ntr-un modul special Procesele pot accesa direct procedurile din monitor, dar nu pot accesa direct structurile de date interne acestuia Doar un singur proces poate fi activ n interiorul unui monitor n orice moment Prin transformarea tuturor regiunilor critice n proceduri de monitor, se obine excluderea mutual
Utilizarea Sistemelor de Operare 34
17
2.3.8 Transferul de mesaje (1) Aceast metod de comunicare interprocese folosete dou primitive, send i receive, care sunt mai mult apeluri de sistem dect construcii de limbaj. Ele pot fi uor aranjate sub forma unor proceduri de bibliotec:
send(destination, &message); receive(source, &message);
Primul apel trimite un mesaj ctre o anumit destinaie, iar al doilea primete un mesaj de la o surs. Dac nici un mesaj nu este disponibil, receptorul se poate bloca pn la primirea unui mesaj
Utilizarea Sistemelor de Operare 35
2.3.8 Transferul de mesaje (2) Emitorul i receptorul se pot afla se maini diferite Pentru a rezolva problema mesajelor pierdute, receptorul trebuie s trimit un mesaj de confirmare (acknowledgement). Dac emitorul nu primete confirmarea, va retrimite mesajul
36
18
2.3.9 Bariere (1) Barierele sunt mecanisme de sincronizare folosite pentru grupuri de procese, n cazul unor aplicaii mprite pe etape. Pentru aceste aplicaii, nici un proces nu poate trece la urmtoarea etap pn cnd toate procesele nu sunt gata pentru urmtoarea etap Prin aezarea unei bariere la sfritul fiecrei etape, cnd un proces ajunge la aceasta, este suspendat pn cnd toate procesele ajung la barier
37
La terminarea calculului dintr-o etap, un proces execut o operaie barrier i apoi este suspendat pn cnd toate procesele vor ajunge la sfritul etapei respective
38
19