Curs 04 - Iuliana Dorobat website

Download Report

Transcript Curs 04 - Iuliana Dorobat website

Curs 4
Comunicarea între procese
(Interprocess Comunication IPC)
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
1. Condiții de competiție
Două procese doresc partajarea acelorași resurse în același timp
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 în
secțiunea sa critică
2.2. Excluziune mutuală utilizând
secțiuni critice
3. Rezolvarea problemei
Soluțiile existente sunt:
• Excluziune mutuală utilizând așteptarea ocupată
(busy waiting)
• activarea și dezactivarea proceselor (Sleep and
wakeup)
• Semafoare
• Mutex-uri
• Monitoare
• Comunicarea prin mesaje
• Bariere
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.
3.1.1. Alternarea strictă a execuției
proceselor
(a) Proces 0.
(b) Proces 1.
3.1.2.Soluția lui Peterson
3.1.3. Utilizarea instrucțiunii TSL
3.2. Sleep and Wakeup(1)
Caz I
Count<>N?;TRUE; P+
Count=Count+1=3
Caz II
Count<>0?;TRUE; C-
Count=Count-1=1
Caz III
Count=N?;TRUE;
P/S
Legendă
N=nr max de sloturi
Count=0?;TRUE;
Caz IV
C/S
Count=nr de sloturi ocupate
P+ producătorul adaugă
C- consumatorul extrage
S sleep
W wakeup
3.2. Sleep and Wakeup(2)
Starea inițială: Count=0, buffer gol
1.
C citește Count=0
2.
UCP întrerupe execuția lui C; d.p.d.v logic C/W
3.
Count<>N?;TRUE; P+
Count=Count+1=1
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
8.
Count<>N?;TRUE; P+
Count=Count+1=2
9.
Count<>N?;TRUE; P+
Count=Count+1=3
10.
Count=N?;TRUE;
P/S
3.3. Semafor
Starea inițială: Count=0, buffer gol
1.
C citește Count=0
2.
UCP întrerupe execuția lui C; d.p.d.v logic C/W
3.
Count<>N?;TRUE; P+
Count=Count+1=1
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
......
10.
Count=N?;TRUE;
P/S
11. SISTEMUL CONSTATĂ C/S ȘI P/S. Sistemul selectează C pentru execuție deoarece
este salvat un wakeup pentru acesta.
12. SEMF=1<>0=> se realizează operația de down pe semafor => SEMF=SEMF-1=0
Count<>0?;TRUE; C13.
Count=Count-1=2
3.4. Mutex
• Mutex-ul este o versiune simplificată a unui
semafor
• Mutex-ul este o variabilă care poate avea două
stări: blocat și deblocat (1/0)
• Dacă un thread dorește accesarea secțiunii critice
apelează mutex_lock. Dacă mutex-ul este deblocat
thread-ul accesează secțiunea critică, altfel acesta
va fi blocat până când threadul din secțiunea
critică apelează mutex_unlock.
• Sunt ușor de implementat cu ajutorul instucțiunii
TSL.
3.5. Monitoare
Exemplu de monitor
3.6. Comunicarea prin mesaje
Send(destinație, &mesaj) Receive(sursă, &mesaj)
Problema producător-consumator:
• Presupunem că toate mesajele au aceiași dimensiune și că toate
mesajele 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ă de
mesaje; pentru ca adresarea mesajului să se realizeze mai ușor(nu
prin intermediul procesului) s-a propus utilizarea unei noi structuri
de 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.
3.7. Bariere
Probleme IPC clasice
• Dining philosophers
• Readers and writers
• Sleeping Barber
Aceste probleme au fost discutate și analizate
utilizând diferite mecanisme de sincronizare.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
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ă?
Întrebare
Care din următoarele NU este un
mecanism de sincronizare?
a)
b)
c)
d)
spinlock
mutex
memorie virtuala
semafor
Întrebare
Care din următoarele este un mecanism de
sincronizare busy-waiting?
a)
b)
c)
d)
spinlock
mutex
memorie virtuala
semafor
Întrebare
Care din următoarele forme de sincronizare
NU folosește busy-waiting?
a)
b)
c)
d)
spinlock
algoritmul lui Peterson
alternare strictă
mutex
Întrebare
Câte semafoare sunt necesare pentru rezolvarea
corectă a problemei producător-consumator?
(mutexurile sunt considerate tot semafoare)
a)
b)
c)
d)
1
2
3
problema producător-consumator nu poate fi
rezolvată corect folosind semafoare
Bibliografie
• A. Tanembaum, Modern Operating Systems, Prentice Hall
2001, 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.