1 / 87

Capitolul 3

Capitolul 3. Multiprogramare si Multitasking. Multiprogramare si Multitasking (1). Mijloace de sprijin pentru multiprogramare : a) salvarea si restaurarea starii programelor pentru a permite intreruperea si reluarea corecta a executiei, cerute de executiile intercalate;

Télécharger la présentation

Capitolul 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capitolul 3 Multiprogramare si Multitasking

  2. Multiprogramare si Multitasking (1) Mijloace de sprijin pentru multiprogramare : • a)salvarea si restaurarea starii programelor pentru a permite intreruperea si reluarea corecta a executiei, cerute de executiile intercalate; • b) excluderea mutuala, care permite utilizatorilor sa foloseasca in comun o resursa, evitand problemele generate de posesia multipla a resursei;

  3. Multiprogramare si Multitasking (2) • c) sincronizarea, pentru a coordona activitatile taskurilor care interactioneaza ; • d) activarea si dezactivarea taskurilor, permitand pornirea si oprirea unui anumit task

  4. Procese si Procesoare

  5. Mijloace de Sprijin pentru Multiprocessing • salvarea si restaurarea starii programelor pentru a permite intreruperea si reluarea corecta a executiei, cerute de executiile intercalate; • excluderea mutuala, care permite utilizatorilor sa foloseasca in comun o resursa, evitand problemele generate de posesia multipla a resursei; • sincronizarea, pentru a coordona activitatile taskurilor care interactioneaza ; • activarea si dezactivarea taskurilor, permitand pornirea si oprirea unui anumit task.

  6. Proces Fiecare proces este compus din trei parti principale: • O baza de date, pastrata, de regula, in memoria principala, care contine toate datele si spatiul de memorie necesare pentru reprezentarea variabilelor programului, ca si celelalte variabile cerute de executarea calculelor aferente. • Codulcare implementeaza algoritmul executat de catre proces. • Mediulin care se executa procesul. Termenul de "mediu" indica o serie de atribute ale procesului, adesea gestionate de catre sistemul de operare, care sunt necesare executiei corecte. Exemple de atribute pot fi descriptorii zonelor de memorie rezervate procesului, cu drepturile de acces pentru fiecare din ele

  7. Starile Procesului • Valorile datelor ce se salveaza. De obicei acestea sunt continuturile registrelor, care se afla intr‑o zona considerata nesigura intrucat noul proces, prin utilizarea registrelor, distruge continutul acestora. In clasa registrelor intra, desigur,indicatorul stivei si indicatorii de conditie. • Contorul programului, indicand prima instructiune ce trebuie executata la reluarea rularii procesului. • Toate registrelecare contin informatii ce descriu mediul de executie al procesului, incluzand, eventual, registrele unor dispozitive externe, cum sunt unitatea de gestiune a memoriei si coprocesorul matematic (unitatea de calcul in virgula mobila).

  8. Descriptorul Procesului

  9. Excluderea Mutuala • Executia paralela sau pseudoparalela a mai multor procese conduce, in mod inevitabil, la concurenta pentru resursele sistemului, resurse ce pot fi solicitate de mai mult de un proces pentru terminarea taskului ce i s‑a asignat. • Fenomenul este evident in cazul sistemelor paralele, dar apare ca paradoxal pentru sistemele pseudoparalele.

  10. Concurenta in Sisteme Pseudoparalele (1) • Se considera doua procese A si B, care au nevoie de o resursa a sistemului. • Starea acesteia, libera (free) sau ocupata (busy), este memorata in locatia de memorie X. • X = 0 indica resursa libera. • Se considera o masina ipotetica, folosind un limbaj de asamblare ipotetic, dar evident ca mnemonica, ruland, pentru fiecare proces, urmatorul cod: test X; inscrie indicatorul de conditie conform valorii memorate in X bnz after; salt la eticheta afterdaca resursa este ocupata set X; inscrie 1 in X pentru a semnala ca resursa a devenit ocupata

  11. Concurenta in Sisteme Pseudoparalele (2) Din exemplu rezulta ca este necesar un mecanism de control al accesului la resursele critice. Solutia problemei excluderii mutuale trebuie sa satisfaca urmatoarele criterii: • numai un singur proces poate utiliza, la un anumit moment de timp, resursa in discutie; • cand mai multe procese incearca, simultan, obtinerea resursei, mecanismul de control trebuie sa aloce resursa numai unuia din procese si intr‑un timpfinit; • cand un proces detine o resursa,timpul de posesie trebuie sa fie limitat; la expirarea lui, resursa trebuie sa fie eliberata; • procesele asteptand disponibilitatea resursei trebuie sa nu iroseasca timpul unitatii centrale, deci trebuie suspendate.

  12. Regiuni Critice • Dijkstra Proprietatile regiunii critice sunt urmatoarele: a) cel multun proces executa declaratiile asociate regiunii critice; b) un proces care doreste sa execute declaratiile asociate regiunii critice va dobandi acest drept intr‑un timp finit; c) un proces care doreste sa execute declaratiile unei regiuni critice o face intr‑un timp finit.

  13. Mecanismul test-and-set (1) di; dezactivarea sistemului de intreruperi move A,X ; copiaza X in A set X; inscrie X cu 1 ei; reactivarea sistemului de intreruperi test A; testarea vechii valori a lui X, acum cea a variabilei A.

  14. Mecanismul test-and-set (2) tas A, X testeaza si inscrie cu 1 pe X, copiaza vechea sa valoare in A, totul intr-un singur ciclu instructiune (normal – secventa “neintreruptibila”)

  15. Structuri Multiprocesor si Excludere Mutuala • De regula, magistrala ramane in posesia unui utilizator pentru timpul necesar efectuarii unui singur ciclu de acces la memorie, dupa care este eliberata. • O astfel de tehnica de atribuire a magistralei poate conduce la erori chiar in conditiile existentei instructiunii tas, a carei executie necesita doua cicluri de acces la memorie pentru completare: • unul de citire, care copiaza X in A, • un al doilea de inscriere, care inscrie cu1 variabila X.

  16. Sistem cu Doua Procesoare

  17. Sistem Biprocesor - Problema

  18. Sistem Biprocesor - Solutie

  19. Implementarea Regiunilor Critice Vaste • Criteriile de caracterizare a unei solutii rezonabile a problemei excluderii mutuale prescriu un timp finit de asteptare si un comsum minim din timpul unitatii centrale de prelucrare. • Prima solutie consta in a permite unui proces sa cicleze in jurul aceluiasi test pana la eliberarea regiunii. In tot timpul incercarilor nereusite procesorul este mentinut ocupat, desi ar fi putut fi utlizat pentru scopuri mai lucrative, ruland procese care nu sunt in asteptarea intrarii in regiunea critica (busy waiting). SOLUTIA ESTE INACCEPTABILA!

  20. Semafoare • Servesc la sincronizarea proceselor. • Semnalele de sincronizare sunt cerute de faptul ca vitezele relative ale celor doua procese sunt, in general, necunoscute. • Intr‑un sistem cu procese concurente durata de executie a unei secvente de instructiuni depinde de: • numarul si caracteristicile celorlalte procese concurente; • evenimente externe, al caror numar si moment al aparitiei sunt necunoscute.

  21. Semafoare - Solutie • Solutia clasica a problemei sincronizarii intre doua sau mai multe procese, fara schimb de date, se bazeaza pe utilizarea semafoarelor. • Notiunea a fost introdusa de catre Dijkstra, o serie de alti cercetatori continuandu‑i lucrarile.

  22. Edsger Wybe Dijkstra (1)

  23. Edsger Wybe Dijkstra (2) • Edsger Wybe Dijkstra a fost unul dintre cei mai influenti membri ai generatiei fondatoare a informaticii. Printre domeniile in care contributiile sale stiintifice sunt fundamentale se numara: • Proiectarea algotimilor • Limbaje de programare • Proiectarea programelor • Sisteme de operare • Procesare distribuita • Specificatie si verificare formala • Proiectarea argumentelor matematice • In plus, Dijkstra a fost adanc preocupat de predare si de relatiile dintre informatica academica si industria software. • In cei peste 40 de ani de informatician, in care a ocupat posturi atat in educatie, cat si in industrie, Dijkstra a adus contributii care au fost rasplatite cu multe premii si titluri, inclusiv cea mai inalta distinctie din computer science, Premiul ACM Turing.

  24. Semafoare – Solutie (1) • In principiu, semaforul este caracterizat de o variabila x, careia i se asociaza doua proceduri: P(x) si V(x) (unii autori le denumesc "signal" si, respectiv, "wait") (Verhogen (V) = to raise, to increase; Prolagen (P) = a neologism coming from To try and lower) . • O alta caracteristica a semaforului este numarul c(x) maxim de semnale ce pot fi acceptate de catre semafor (“capacitate”). • Functionarea corecta a semaforului este dictata de regulile numite invariantii comunicatiei (communication invariants).

  25. Semafoare – Solutie (2) • Fie s(x) si r(x) numarul de semnale trimise, respectiv primite de catre semaforul x. • O comportare corecta presupune respectarea relatiei (“invariantul de comunicatie”) • Uneori, este utila asignarea unei valori initiale i(x) unui semafor inaintea declansarii operatiilor de sincronizare intre procese. In acest caz invariantul de comunicatie se rescrie astfel:

  26. Semafoare – Solutie (3) • Operarea celor doua proceduri asociate P si V trebuie sa satisfaca anumite reguli, care definesc modul in care semaforul sincronizeaza executia procesului.

  27. Semafoare – Solutie – Operatia P • Operatia P efectuata asupra semaforului cand s(x) + i(x) = r(x) + c(x) produce • suspendarea procesului; • inserarea lui in sirul de asteptare asociat semaforului, incrementarea lui s(x) nefiind posibila. • Daca s(x) + i(x) < r(x) + c(x) se incrementeaza s(x). Suplimentar, daca exista procese asteptand la semafor, unuiadintre ele i se permite continuarea si are loc incrementarea lui r(x).

  28. Semafoare – Solutie – Operatia V • Operatia V efectuata asupra semaforului pentru care r(x) < s(x) + i(x) are ca rezultat incrementarea lui r(x). • Suplimentar, daca s(x) + i(x) = r(x) + c(x) si exista procese asteptand la semafor, unuia dintre acestea i se permite continuarea si are loc incrementarea lui s(x). • Daca procedura se executa cand r(x) = s(x) + i(x), procesul este suspendat si inserat in sirul de asteptare asociat semaforului, incrementarea lui r(x) nefiind posibila.

  29. Semafoare – Implementare (1) • Pentru implementarea regulilor de sincronizare este necesara o unica valoare intreaga n(x) = s(x) + i(x) ‑ r(x) • Din invariantii de comunicatie se deduce ca : 0 <= n(x) <= c(x) • In plus, valoarea initiala a lui n(x) este i(x) pentru a asigura corectitudinea operatiilor. • Aceasta regula rezulta din definirea lui n(x) si impunand: s(x) = r(x) = 0 • Intrucat sirurile de asteptare sunt incluse in regulile de sincronizare, structurile de date utilizand procedurile P si V trebuie sa posede anumite caracteristici necesare implementarii acestor siruri.

  30. Semafoare – Implementare (2) • Aparent, sunt necesare doua tipuri de siruri: • unul pentru procesele suspendate in timpul executarii operatiei P, • celalalt pentru procese suspendate in timpul executiei operatiei V. • Desi distincte din punctul de vedere logic, cele doua siruri pot fi implementate utilizand o singura structura; este usor de demonstrat ca, daca c(x) = 0, este imposibil a avea doua procese asteptand simultan in ambele siruri.

  31. Semafoare – Implementare (3) • Pentru implementarea regulilor de sincronizare este necesara o unica valoare intreaga n(x) = s(x) + i(x) ‑ r(x) • Din invariantii de comunicatie se deduce ca : 0 < n(x) < c(x) • In plus, valoarea initiala a lui n(x) este i(x) pentru a asigura corectitudinea operatiilor. • Aceasta regula rezulta din definirea lui n(x) si impunand: s(x) = r(x) = 0 • Intrucat sirurile de asteptare sunt incluse in regulile de sincronizare, structurile de date utilizand procedurile P si V trebuie sa posede anumite caracteristici necesare implementarii acestor siruri.

  32. Semafoare – Implementare (4) struct x { int c; //capacitatea semaforului int n; //valoarea curenta a variabilei int v; //variabila blocare (boolean) int waitqueue; //stare sir la semafor (boolean) //(“Coada”!) }

  33. Procedura P(x)

  34. Procedura V(x)

  35. Functionarea Semafoarelor

  36. Comunicatia Intre Procese Cutii Postale (Mailboxes) • In unele cazuri, interactiunea intre procese cere efectuarea unui schimb de date, suplimentar semnalelor de sincronizare, intre procesele care coopereaza. • Solutia clasica a acestor probleme foloseste un tampon pentru mesaje (message buffer), numit si cutie postala (mailbox). • Cutia postala reprezinta o extensie a semafoarelor, deoarece ea permite asocierea unui set de date, numit mesaj, fiecarei operatii de semnalizare.

  37. Cutii Postale (1) • O cutie postala se comporta in acelasi mod cu un semafor, cu exceptia manipularii mesajelor. • In consecinta, se folosesc aceleasi reguli de sincronizare si aceiasi invarianti. • Operatiile trebuie modificate pentru a se putea manipula mesajele care se transmit sau se receptioneaza. • Noile operatii sunt send(x,m) si receive(x,m), corespunzand lui P si respectiv, V. • x este identificatorul cutiei postale iar m este cel al mesajului.

  38. Cutii Postale (2) • Cand se efectueaza o operatie de tip send, mesajul se introduce in cutia postala, daca aceasta nu este plina. • Cand se efectueaza o operatie de tip receive se extrage primul mesaj din cutia postala, daca aceasta nu este vida. • In mod obisnuit, ordonarea mesajelor in cutia postala este similara cu cea a unei stive de tip FIFO: operatia receive extrage din stiva cel mai vechi mesaj pe care aceasta il contine. • Sunt posibile si organizari care asigneaza prioritati mesajelor continute de cutia postala.

  39. Sincronizarea Proceselor (1) • Se considera o unica linie tehnologica compusa din doua masini unelte, masina 1 si masina 2, si un unic tampon B de capacitate c, plasat intre cele doua masini. • Operatia este astfel organizata incat masina 1 primeste o piesa si o prelucreaza. • Cand operatia este completa, masina 1 plaseaza piesa in tampon, cu conditia ca acesta sa nu fie plin, dupa care obtine o noua piesa, daca este disponibila, si repeta aceeasi operatie. • Cand masina 1 incearca sa plaseze o piesa in tamponul plin functionarea sa este blocata, pentru ca trebuie sa astepte pana cand este spatiu in acesta, ceea ce ii permite sa depuna piesa prelucrata si sa se ocupe de o alta.

  40. Sincronizarea Proceselor (2) • In cealalta parte a tamponului, masina 2 se comporta intr‑un mod similar. • Intai, ea incearca sa obtina din tampon o piesa pentru prelucrare. • Daca acesta nu este gol, masina 2 extrage o piesa, pe care o prelucreaza. • In caz contrar asteapta pana cand tamponul contine cel putin o piesa. • Cele doua masini sunt comandate de doua procese diferite, A si B, executate de catre aceeasi unitate centrala de prelucrare. • Se pune problema sincronizarii functionarii lor, pe baza continutului tamponului.

  41. Schita Procesului A while (true) do { obtine o noua piesa; prelucreaza piesa; P(x); /* P blocheaza A cand tamponul este plin*/ pune piesa in tampon; }

  42. Schita Procesului B while (true) do { V(x); /* V blocheaza B cand tamponul este gol*/ obtine o piesa din tampon; prelucreaza piesa; pune piesa la iesire; }

  43. Sincronizarea Proceselor (3) • Operatia P blocheaza procesul A cand tamponul este plin, in timp ce operatia V blocheaza procesul B cand acesta este vid. • Pe de alta parte, P porneste procesul B cand tamponul este gol si B asteapta sa prelucreze, iar V va porni procesul A cand tamponul este plin si A asteapta sa stocheze o piesa in tampon.

  44. Comunicatia Intre Procese (1) • Exemplul precedent poate fi modificat pentru a demonstra ca doar semafoarele nu sunt suficiente pentru implementarea simpla a sincronizari. • In exemplul modificat se considera ca piesele nu sunt identice. Ele fac parte din patru clase distincte, identificate prin numerele 1,2,3,4. • De asemenea, se impune cerinta suplimentara ca piesele sa fie prelucrate in aceeasi secventa de catre ambele masini.

  45. Comunicatia Intre Procese (2) • Sincronizarea presupune si un schimb de date intre procesele care coopereaza, intrucat informatia vehiculata nu indica doar introducerea in tampon a unei piese sau extragerea unei piese din acesta. • Orice semnal de inserare trebuie sa contina date identificand tipul piesei, care trebuie citite cand piesa este extrasa.

  46. Comunicatia Intre Procese (3) • Aceste considerente recomanda folosirea unei cutii postale, in care mesajele sunt intregi indicand tipul piesei asociate.

  47. Schita Procesului A while (true) do { obtine o piesa si transcrie in m tipul ei; case m of { 1: prelucrare de tip 1; 2: prelucrare de tip 2; 3: prelucrare de tip 3; 4: prelucrare de tip 4; } send(x,m); pune piesa in tampon; }

  48. Schita Procesului B while (true) do { obtine o piesa si transcrie in m tipul ei; send(x,m); case m of { 1: prelucrare de tip 1; 2: prelucrare de tip 2; 3: prelucrare de tip 3; 4: prelucrare de tip 4; } pune piesa la iesire; }

  49. Mailbox – Comentarii (1) • Sincronizarea se efectueaza la fel ca in cazul precedent, dar procesul A transfera catre B informatii privind tipul piesei. • Daca organizarea cutiei postale este de tipul FIFO, piesele sunt prelucrate in aceeasi secventa de catre ambele masini, deoarece procesul B primeste mesajele in ordinea in care ele au fost emise de catre A. • Nu s‑au facut ipoteze privind vitezele relative ale celor doua procese, sau asupra sosirii pieselor la masina 1, element esential in intregul proces de productie. Acest fapt garanteaza ca solutia bazata pe semafoare sau cutii postale este corecta indiferent de viteza de executie.

More Related