Curs04_Intercomunicarea proceselor
-
Upload
nicolae-stan -
Category
Documents
-
view
47 -
download
0
Transcript of Curs04_Intercomunicarea proceselor
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 1/24
Curs 4Comunicarea între procese
(Interprocess Comunication -IPC)
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 2/24
Concepte• Colaborare
– schimb de informație – partajarea informației
• Concurență/competiție – acces exclusiv (secțiuni critice)
• rezultate predictibile• accesul concurent poate produce inconsistențe • serializarea accesului
– Exemplu:• Un proces (P1) folosește resursa R • Un alt proces (P2) solicită resursa R prelucrată de P1 • P2 trebuie să aștepte (acces exclusiv) eliberarea resursei R
• Coordonare
– ordonarea acțiunilor unui proces în funcție de acțiunile altui proces • P1 folosește R1 și produce R2 • P2 solicită R2 • P2 trebuie să aștepte ca P1 să producă R2 (sincronizare)
• Mecanisme de tip eveniment
– signal/notify – notifică producerea evenimentului/acțiunii – wait – așteaptă producerea evenimentului pentru sincronizare
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 3/24
1. Condiții de competiție
Două procese doresc partajarea acelorași resurse în același timp
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 4/24
2.1. Excluziune mutuală utilizând
secțiuni critice
Excluziunea mutuală depinde de:
1. Două procese nu se pot afla simultan în secțiunea critică
2. Nu se fac presupuneri referitoare la numărul și viteza UCP 3. Nici un proces care rulează înafara propriei sale secțiuni
critice nu poate bloca un alt proces
4. Nu se poate bloca la infinit, intrarea unui proces însecțiunea sa critică
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 5/24
2.2. Excluziune mutuală utilizând
secțiuni critice
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 6/24
3. Rezolvarea problemei
Soluțiile existente sunt:• Excluziune mutuală utilizând așteptarea ocupată
(busy waiting)
• activarea și dezactivarea proceselor (Sleep andwakeup)• Semafoare• Mutex-uri• Monitoare• Comunicarea prin mesaje• Bariere
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 7/24
3.1. Excluziune mutuală utilizând
așteptarea ocupată (busy waiting) Excluziune mutuală utilizând busy waiting se
poate realiza prin:
• Dezactivarea întreruperilor • Utilizarea unor biți de atenție
• Alternarea strictă a execuției proceselor
• Soluția lui Peterson
• Utilizarea instrucțiunii TSL.
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 8/24
3.1.1. Alternarea strictă a execuției
proceselor
(a) Proces 0. (b) Proces 1.
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 9/24
3.1.2.Soluția lui Peterson
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 10/24
3.1.3. Utilizarea instrucțiunii TSL
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 11/24
3.2. Sleep and Wakeup(1)
Legendă
N=nr max de sloturi
Count=nr de sloturi ocupateP+ producătorul adaugă
C- consumatorul extrage
S sleep
W wakeup
P/S
C/S
Count<>N?;TRUE; P+ Count=Count+1=3Caz I
Count<>0?;TRUE; C- Count=Count-1=1Caz II
Count=N?;TRUE;Caz III
Count=0?;TRUE;
Caz IV
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 12/24
3.2. Sleep and Wakeup(2)Starea inițială: Count=0, buffer gol1. C citește Count=0 2. UCP întrerupe execuția lui C; d.p.d.v logic C/W
Count<>N?;TRUE; P+ Count=Count+1=13.
4. Count=1 => anterior Count=0; P DECIDE C/S => SEMNAL NOU ACTIVARE C
5. D.p.d.v. logic C/W => SE PIERDE SEMNALUL NOU DE ACTIVARE A LUI C
6. UCP redă controlul lui C;
Count=0?;TRUE;7. C/S
Count<>N?;TRUE; P+ Count=Count+1=28.
Count<>N?;TRUE; P+ Count=Count+1=39.
Count=N?;TRUE;10.
P/S
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 13/24
3.3. Semafor Starea inițială: Count=0, buffer gol1. C citește Count=0 2. UCP întrerupe execuția lui C; d.p.d.v logic C/W
Count<>N?;TRUE; P+ Count=Count+1=13.
4. Count=1 => anterior Count=0; P DECIDE C/S => SEMNAL NOU ACTIVARE C
5. Realizăm operația de up pe semafor ; SEMF=SEMF+1(salvăm wakeup-ul)
6. UCP redă controlul lui C;
Count=0?;TRUE;7. C/S
Count=N?;TRUE;10.
P/S
......
11. SISTEMUL CONSTAT Ă C/S ȘI P/S. Sistemul selectează C pentru execuție deoareceeste salvat un wakeup pentru acesta.
12. SEMF=1<>0=> se realizează operația de down pe semafor => SEMF=SEMF-1=0
Count<>0?;TRUE; C-13. Count=Count-1=2
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 14/24
3.4. Mutex
• Mutex-ul este o versiune simplificată a unuisemafor • Mutex-ul este o variabilă care poate avea două
stări: blocat și deblocat (1/0)
• Dacă un thread dorește accesarea secțiunii criticeapelează mutex_lock. Dacă mutex-ul este deblocatthread-ul accesează secțiunea critică, altfel acestava fi blocat până când threadul din secțiunea
critică apelează mutex_unlock.• Sunt ușor de implementat cu ajutorul instucțiunii
TSL.
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 15/24
3.5. Monitoare
Exemplu de monitor
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 16/24
3.6. Comunicarea prin mesajeSend(destinație, &mesaj) Receive(sursă, &mesaj)
Problema producător -consumator:
• Presupunem că toate mesajele au aceiași dimensiune și că toatemesajele transmise care nu au fost încă recepționate sunt colectate
într-un buffer de către SO.Numărul N de mesaje utilizate este
analog celor N sloturi de memorie ale bufferului.
• Cum funcționează? – Procesul C transmite N mesaje goale procesului P.
– Procesul P preia un mesaj gol și transmite un mesaj complet
procesului C.
• Dacă unul din procese este mai rapid se formează o coadă demesaje; pentru ca adresarea mesajului să se realizeze mai ușor(nu
prin intermediul procesului) s-a propus utilizarea unei noi structuride date numită mailbox care acționează ca un buffer încărcat cu
mesaje.Asfel parametrii de adresare pentru send și receive nu vor mai fi procesele P și C ci cutiile lor poștale.
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 17/24
3.7. Bariere
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 18/24
Probleme IPC clasice
• Dining philosophers• Readers and writers• Sleeping Barber
Aceste probleme au fost discutate și analizateutilizând diferite mecanisme de sincronizare.
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 19/24
De știut... • Caracterizați noțiunea de concurență între două procese. • Caracterizați noțiunea de sincronizare între două procese. • Dați un exemplu de situație în care două procese se găsesc în condiții de
competiție. • Două procese sunt mutual exclusive. Explicați. • Ce reprezintă o secțiune critică? • Două procese obțin exclusivitate mutuală prin metoda de dezactivare a
întreruperilor. Prezentați dezavantajele metodei. • Ce reprezintă un bit de atenție?
• Prezentați metoda de alternare strictă a execuției proceselor și dezavantajele ei. • Descrieți soluția lui Peterson.
• Ce reprezintă TSL? • De ce avem nevoie de metoda sleep/wakeup?• Tratați problema producător consumator utilizând metoda sleep/wakeup. • Prezentați cazul în care metoda sleep/wakeup devine ineficientă pentru
rezolvarea problemei producător consumator. • Ce reprezintă un semafor? Exemplificați prin rezolvarea problemei producător
consumator.• Ce reprezintă un mutex? • Ce reprezintă un monitor?
• Cum se realizează comunicarea între procese utilizând mesaje? • Ce reprezintă o barieră?
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 20/24
Întrebare
Care din următoarele NU este un
mecanism de sincronizare?a) spinlock
b) mutex
c) memorie virtualad) semafor
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 21/24
Întrebare
Care din următoarele este un mecanism de
sincronizare busy-waiting?
a) spinlock b) mutex
c) memorie virtuala
d) semafor
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 22/24
Întrebare
Care din următoarele forme de sincronizare
NU folosește busy-waiting?
a) spinlock b) algoritmul lui Peterson
c) alternare strictă
d) mutex
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 23/24
Întrebare
Câte semafoare sunt necesare pentru rezolvareacorectă a problemei producător -consumator?
(mutexurile sunt considerate tot semafoare)a) 1
b) 2
c) 3
d) problema producător -consumator nu poate firezolvată corect folosind semafoare
7/16/2019 Curs04_Intercomunicarea proceselor
http://slidepdf.com/reader/full/curs04intercomunicarea-proceselor 24/24
Bibliografie
• A. Tanembaum, Modern Operating Systems, Prentice Hall2001, pag 100-132.
• A. Silberschatz, P. Galvin, Operating System Concepts,
John Wiley and Sons Inc., 2005, pag 90-108, 191-222.• A. Tanembaum, Modern Operating Systems, Prentice Hall,
2007, pag 117-146. • http://elf.cs.pub.ro/so/wiki/cursuri/curs-05
• Gh. Dodescu, Sisteme de operare, Ed. Economică, 2003, pag 105-129.