Sunteți pe pagina 1din 20

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
care doresc
partajarea
acelorași
resurse în
același timp

Situațiile în care mai multe procese citesc sau scriu pe un set de date partajate și
rezultatul final depinde de care proces rulează și când anume, se numesc
condiții de competiție.
2.1. Excluziune mutuală utilizând
secțiuni critice
Zona în care două procese accesează memoria partajată de
ambele se numește secțiune critică. Dacă reușim ca două
procese să nu se afle în secțiunea critică simultan putem evita
competiția în sine.
Condițiile obținerii exclusivității mutuale sunt:
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

Proces 0. Proces 1.
turn este practic un bit de atenție care utilizează busy
waiting sau spinlock.
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; Count=Count+


P+ 1=3

Caz II Count<>0?;TRUE; Count=Count-


C- 1=1

Caz Count=N?;TRUE;
III P/S
Legendă
N=nr max de sloturi
Count=0?;TRUE;
Caz C/S Count=nr de sloturi
IV ocupate
P+ producătorul adaugă
C- consumatorul extrage
S sleep
W wakeup
3.2. Sleep and
Starea inițială: Count=0, buffer gol
Wakeup(2)
1. C citește Count=0
2. UCP întrerupe execuția lui C; d.p.d.v logic C/W

3. Count<>N?;TRUE; Count=Count+
P+ 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
Count=0?;TRUE;
6.
7. UCP red ă controlul lui C; C/S

8. Count<>N?;TRUE; Count=Count+
P+ 1=2

9. Count<>N?;TRUE; Count=Count+
P+ 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; Count=Count+
P+ 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)
Count=0?;TRUE;
6.
7. UCP red ă controlul lui C; 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; Count=Count-
13. C- 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.Astfel 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ă?
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.
• Gh. Dodescu, Sisteme de operare, Ed. Economică, 2003,
pag 105-129.

S-ar putea să vă placă și