curs04_intercomunicarea proceselor

24
Curs 4 Comunicarea între procese (Interprocess Comunication - IPC)

Upload: nicolae-stan

Post on 30-Oct-2015

50 views

Category:

Documents


0 download

TRANSCRIPT

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.