partea ii sisteme de operare

23
PARTEA II SISTEME DE OPERARE CURSUL 7 COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA Ştefan Stăncescu 1

Upload: gizi

Post on 06-Jan-2016

76 views

Category:

Documents


2 download

DESCRIPTION

Ştefan Stăncescu. PARTEA II SISTEME DE OPERARE. CURSUL 7 COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA. COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA. SISTEM DE CALCUL = resurse PROCESELE = consumatori MULTIPROCESAREA = mai multe procese - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PARTEA II  SISTEME DE OPERARE

PARTEA II SISTEME DE OPERARE

CURSUL 7

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

Ştefan Stăncescu

1

Page 2: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

2

SISTEM DE CALCUL = resurse

PROCESELE = consumatori

MULTIPROCESAREA =

mai multe procese

pe aceleasi resurse de calcul

MULTIPROGRAMAREA =

comunicatia intre procese ruland simultan

aparent independente

Page 3: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

3

MULTIPROGRAMAREA =

comunicatia intre procese independente

dar concurand pe aceleasi resurse

procesele se pot influenta reciproc

NECESARE MECANISME

DE COMUNICARE INTRE PROCESE

Page 4: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

4

RULAREA DETERMINATA =

obtinerea acelorasi rezultate

independent deconditiile rularii

(pentru aceleasi date de intrare)

ORICE RELUARE A RULARII=

ACELEASI REZULTATE

Page 5: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

5

IN MULTIPROGRAMARE

orice fac celelalte progame,

programul curent ruleaza identic

FOLOSIREA RESURSELOR COMUNE

perturba rularea proprie

resursele pot pastra memoria

din alte procese

Page 6: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

6

PREVENIREA INTERFERENTEI

prin mecanisme de comunicare

intre procese

care folosesc resurse comune

MECANISME DE

EXCLUDERE MUTUALA

(dialog civilizat intre procese pentru coordonarea folosirii resurselor comune)

Page 7: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

7

Printer spooler (PRIM = 1)

A:

FINE=3 FINE=4

B:

FINE=3 FINE=4

Page 8: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

8

ZONA CRITICA

zona de program

care exploateaza o sursa comuna

Inainte de a ajunge in zona critica

programele trebuie sa comunice intre ele pentru a-si coordona

folosirea resursei comune

DIN PROPRIA ZONA CRITICA

Page 9: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

9

REGULI DE ACCES IN ZONA CRITICA1. Să nu existe 2 procese simultan în propriile secţiuni critice.

2. Procesele să fie determinate, adică să producă rezultate identice, indiferent de împrejurările de rulare, referitoare la caracteristici hardware sau număr şi caracteristici de procese concurente.

3. Nici un proces care rulează în afara secţiunii critice să nu blocheze alte procese de a folosi zona critică.

4. Nici un proces să nu aştepte arbitrar de mult până la

intrarea în secţiunea critică proprie.

Page 10: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCA

10

REGULA CEA MAI SIMPLA (?)

Desfiintarea mecanismului de intrerupere (H/W)

Procesul curent impiedica intreruperea sa

de catre alte procese

inainte de a intra in ZC => blocare IT

dupa folosirea ZC => deblocare IT

Dezavantaj – nedeblocarea la iesire din ZC!

nu respecta regulile 3 si 4

Page 11: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

11

VARIABILE DE ÎNCHIDERE-POARTĂ

PROCES A PROCES B

EROARE:

B intrerupe A inainte ca A sa faca LOCK=1 => Regula 1 cade

Page 12: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

12

ALTERNARE FORŢATĂ CU VARIABILĂ COMUTATOR COMUNĂ

PROCES A PROCES B

EROARE:

A pune comutator=2 si sta mult in ZNC

B trece rapid ZC si vrea iar ZC => Regula 3 cade

Page 13: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

13

ALTERNARE CU VARIABILĂ LOCALĂ VIZIBILĂ

PROCES A PROCES B

EROARE:

A si B trec simultan task_1=INT si task_2=INT

A si B blocate reciproc => Regula 4 cade

Page 14: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

14

ALTERNARE CU VARIABILĂ LOCALĂ VIZIBILĂ

PROCES A PROCES B(12)

EROARE:

A si B sincrone

A si B blocate reciproc => Regula 4 cade

Page 15: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

15

METODA DEKKER

PROCES A

Page 16: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

16

METODA PETERSON

Enter_region:{/*2 constante cu ordinea proceselor

alt_proces=not ast_proces;

vreau(ast_proces)="1";

/* procesul curent doreste să intre în zona critică */

activ=ast_proces;

/* sunt pe cale să intru şi altul vrea să intre */

while((activ==ast_proces) && (vreau(alt_proces)==1))

{} /* ZC

}

Leave_region: { vreau[ast_proces]=0; } /* indică ieşirea din zona critică */

 

Page 17: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU TESTARE - POLLING

17

METODA H/W CU TEST & SET LOCK - TSL

enter_region:

CHECK: MOV AL,1 ; prevede interzicerea altor procese

LOCK: XCHG FLAG,AL ; TSL pentru XCHG

TEST AL,AL ; examinează starea „0” a variabile FLAG

JNZ CHECK ; aşteaptă dacă alt procesor deţine resurs

 

zonă critică, în care se exploatează o resursă comună protejată de variabila FLAG

 

leave_region:

 

MOV FLAG,#0 ; iniţializează FLAG

Page 18: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU BLOCARE

18

EXCLUDEREA PRIN SLEEP-WAKEUP

SLEEP - blocheaza proces curent

WAKEUP(p) - trezeste proces p

EXE BENEFEXE produce 1 produs <-----

SLEEP <--------(DA) Magazia plina? | -> Magazia goala? (DA) -----------------> SLEEP

1 produs => magazie | | 1 produs <= magazie

Actualizare stare magazie | | Actualizare stare magazie

WAKEUP(BENEF)I-a intrare in magazia goala? | | I-a iesire din magazia plina?-WAKEUP(EXE)

NU? -----------------> |NU?

<--- BENEF consuma 1 produs

Page 19: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU BLOCARE

19

EXCLUDEREA RECIPROCA PRIN SEMAFOARE

Semafor: variabila care numără trezirile

pentru a ţine cont de ele apoi (le memoreaza).

de fapt, un contor.

Asupra unui semafor acţionează două funcţii :

DOWN(s) : testează semaforul s :

- dacă s>0 decrementează semaforul s şi continuă procesul

- dacă s=0 blochează procesul curent

UP(s) : incrementează semaforul s.

Page 20: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU BLOCARE

20

EXCLUDEREA RECIPROCA PRIN SEMAFOARE

Exemplu : o magazie cu un producător şi un beneficiar.

Vom folosi 3 semafoare:

full : număr de locuri ocupate în magazie. Initial full=0 ;magazia goală

empty : număr de locuri libere în magazie. Initial empty=n ;capacitatea magaziei

mutex : asigura accesul exclusiv la magazie. Initial mutex=1 ;permite accesul în zona critică

Page 21: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU BLOCARE

21

EXCLUDEREA RECIPROCA PRIN MONITOARE

Page 22: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU BLOCARE

22

EXCLUDEREA RECIPROCA EXEMPLU

Page 23: PARTEA II  SISTEME DE OPERARE

COMUNICATIA INTRE PROCESE SI EXCLUDEREA RECIPROCAMECANISME CU BLOCARE

23

EXCLUDEREA RECIPROCA PRIN EXEMPLE

Dining philosophers (Dijkstra):

https://www.eecis.udel.edu/~bmiller/cis361/2011f/slides/Classics