kölcsönös kizárás (bináris és nembináris szemaforok)

50
Kölcsönös kizárás (bináris és nembináris szemaforok) Több egymással párhuzamosan futó folyamat vagy szál gyakran kommunikál közösen használt memóriaterületek segítségével. Természetesen ez nem jelenti azt, hogy ezek a területek egyidejűleg is elérhetőek lennének a folyamatok számára, ez igen veszélyes lenne. A közös memória területek tehát non-preemptív erőforrásoknak tekinthetők. Az egyidejű hozzáférés kizárása szemaforok segítségével történik. A továbbiakban a szemaforok működését két klasszikus példával illusztráljuk: Termelő-fogyasztó probléma Postaláda kezelés

Upload: eagan-oneil

Post on 30-Dec-2015

24 views

Category:

Documents


0 download

DESCRIPTION

Kölcsönös kizárás (bináris és nembináris szemaforok). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Kölcsönös kizárás (bináris és nembináris szemaforok)

Kölcsönös kizárás(bináris és nembináris szemaforok)

• Több egymással párhuzamosan futó folyamat vagy szál gyakran kommunikál közösen használt memóriaterületek segítségével. Természetesen ez nem jelenti azt, hogy ezek a területek egyidejűleg is elérhetőek lennének a folyamatok számára, ez igen veszélyes lenne. A közös memória területek tehát non-preemptív erőforrásoknak tekinthetők.

• Az egyidejű hozzáférés kizárása szemaforok segítségével történik.

• A továbbiakban a szemaforok működését két klasszikus példával illusztráljuk:

– Termelő-fogyasztó probléma

–Postaláda kezelés

Page 2: Kölcsönös kizárás (bináris és nembináris szemaforok)

TERMELŐ - FOGYASZTÓ

Page 3: Kölcsönös kizárás (bináris és nembináris szemaforok)

Közösen használt erõforrásokKölcsönös kizárás

• Termelõ / fogyasztó probléma

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

Page 4: Kölcsönös kizárás (bináris és nembináris szemaforok)

Közösen használt erõforrásokKölcsönös kizárás

• A közös adatterületet (KÖZÖS ERÕFORRÁS) egyszerre csak egy folyamat használhatja (KÖLCSÖNÖS KIZÁRÁS)

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

Page 5: Kölcsönös kizárás (bináris és nembináris szemaforok)

Közösen használt erõforrásokKölcsönös kizárás

• A közös adatterületet (KÖZÖS ERÕFORRÁS) egyszerre csak egy folyamat használhatja (KÖLCSÖNÖS KIZÁRÁS)

• Vezérlés: SZEMAFOR segítségével

• Kölcsönös kizárás igénye nem csak közös memória esetén lép fel; pl. nyomtató közös használata

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 6: Kölcsönös kizárás (bináris és nembináris szemaforok)

• Mielõtt a folyamat használni kezdené a közös erõforrást, ellenõriznie kell, hogy az szabad-e. (Ezt az adott közös erõforráshoz rendelt szemafor jelzi.)

• CSAK akkor kezdheti el használni, ha a szemafor szabadot jelzett, ellenkezõ esetben várakoznia kell!

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 7: Kölcsönös kizárás (bináris és nembináris szemaforok)

• 1. a szemafor olvasása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 8: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 2. a beolvasott érték vizsgálata

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 9: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 2. a beolvasott érték vizsgálata 3. ha szabad: a szemafor foglaltra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 10: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 2. a beolvasott érték vizsgálata 3. ha szabad: a szemafor foglaltra állítása 4. ha foglalt: vissza 1-re

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 11: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 2. a beolvasott érték vizsgálata 3. ha szabad: a szemafor foglaltra állítása 4. ha foglalt: vissza 1-re 5. az erõforrás használata (írás a közös memóriába)

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 12: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 2. a beolvasott érték vizsgálata 3. ha szabad: a szemafor foglaltra állítása 4. ha foglalt: vissza 1-re 5. az erõforrás használata (írás a közös memóriába)6. a szemafor szabadra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 13: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték vizsgálata 3. ha szabad: a szemafor foglaltra állítása 4. ha foglalt: vissza 1-re 5. az erõforrás használata (írás a közös memóriába) 6. a szemafor szabadra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 14: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor foglaltra állítása 4. ha foglalt: vissza 1-re 5. az erõforrás használata (írás a közös memóriába) 6. a szemafor szabadra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 15: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása4. ha foglalt: vissza 1-re 5. az erõforrás használata (írás a közös memóriába) 6. a szemafor szabadra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 16: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re5. az erõforrás használata (írás a közös memóriába) 6. a szemafor szabadra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 17: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re5. az erõforrás használata 5. az erõforrás

használata (írás a közös memóriába) (olv. a közös

memóriából)6. a szemafor szabadra állítása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 18: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re5. az erõforrás használata 5. az erõforrás

használata (írás a közös memóriába) (olv. a közös

memóriából)6. a szemafor szabadra állítása 6. a szemafor szabadra

áll.

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 19: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re5. az erõforrás használata 5. az erõforrás

használata (írás a közös memóriába) (olv. a közös

memóriából)6. a szemafor szabadra állítása 6. a szemafor szabadra

áll.

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 20: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re5. az erõforrás használata 5. az erõforrás használata (írás a közös memóriába) (olv. a közös memóriából)6. a szemafor szabadra állítása 6. a szemafor szabadra áll.

JÓ EZ ??

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 21: Kölcsönös kizárás (bináris és nembináris szemaforok)

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

1. a szemafor olvasása 1. a szemafor olvasása 2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata 3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása 4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re 5. az erõforrás használata 5. az erõforrás használata (írás a közös memóriába) (olv. a közös

memóriából) 6. a szemafor szabadra állítása 6. a szemafor szabadra áll.

Page 22: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása 2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata 3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása 4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re 5. az erõforrás használata 5. az erõforrás használata (írás a közös memóriába) (olv. a közös memóriából) 6. a szemafor szabadra állítása 6. a szemafor szabadra áll.

KRITIKUS SZEKCIÓ, kritikus szakasz, kritikus régió

OSZTHATATLAN MÛVELET (PRIMITÍV)

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

Page 23: Kölcsönös kizárás (bináris és nembináris szemaforok)

P és V primitívek• Primitív: megszakíthatatlan (oszthatatlan)

mûvelet

• P primitív: FOGLALTTÁ ÁLLÍTÁS

• V primitív: SZABADDÁ ÁLLÍTÁS

Page 24: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 25: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S);

ÍRÁS A MEMÓRIÁBA

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 26: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 27: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S); P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 28: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 29: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S); V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 30: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S); V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 31: Kölcsönös kizárás (bináris és nembináris szemaforok)

POSTALÁDA

Page 32: Kölcsönös kizárás (bináris és nembináris szemaforok)

Postaláda kezelés

• Postaláda: olyan közös adatterület, ahová EGYNÉL TÖBB (pl. N db.) üzenet írható

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

Page 33: Kölcsönös kizárás (bináris és nembináris szemaforok)

• Postaláda: olyan közös adatterület, ahová EGYNÉL TÖBB (pl. N db.) üzenet írható

• Újabb szemaforok a vezérléshez:

• TELE

• ÜRES

Postaláda kezelés

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 34: Kölcsönös kizárás (bináris és nembináris szemaforok)

Postaláda kezelés• Postaláda: olyan közös adatterület, ahová

EGYNÉL TÖBB (pl. N db.) üzenet írható

• 3 db. szemafor kell a vezérléséhez

–S: a kölcsönös kizárást megvalósító szemafor (bináris; 0=foglalt; 1=szabad; kezdeti értéke: szabad)

–TELE: a tele helyek száma (nem bináris; értéke 0 és N között lehet; kezdeti értéke:0)

–ÜRES: az üres helyek száma (nem bináris; értéke 0 és N között lehet; kezdeti értéke:N)

Page 35: Kölcsönös kizárás (bináris és nembináris szemaforok)

P és V primitívek• Primitív: megszakíthatatlan (oszthatatlan) mûvelet

• P primitív: a paraméterül kapott szemafor értékének EGGYEL CSÖKKENTÉSE (bináris szemafor esetén ez a FOGLALTTÁ ÁLLÍTÁS)

• V primitív: a paraméterül kapott szemafor értékének EGGYEL NÖVELÉSE (bináris szemafor esetén ez a SZABADDÁ ÁLLÍTÁS)

• Feltétel:

–SZABAD = 1

–FOGLALT = 0

Page 36: Kölcsönös kizárás (bináris és nembináris szemaforok)

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

1. a szemafor olvasása 1. a szemafor olvasása 2. a beolvasott érték 2. a beolvasott érték vizsgálata vizsgálata 3. ha szabad: a szemafor 3. ha szabad: a szemafor foglaltra állítása foglaltra állítása 4. ha foglalt: vissza 1-re 4. ha foglalt: vissza 1-re 5. az erõforrás használata 5. az erõforrás használata (írás a közös memóriába) (olv. a közös

memóriából) 6. a szemafor szabadra állítása 6. a szemafor szabadra áll.

Page 37: Kölcsönös kizárás (bináris és nembináris szemaforok)

1. a szemafor olvasása 1. a szemafor olvasása 2. a beolvasott érték 2. a beolvasott érték vizsgálata nagyobb-e 0-nál? 3. ha szabad: a szemafor 3. ha igen: a szemafor foglaltra állítása értékének

csökkentése 4. ha foglalt: vissza 1-re 4. ha nem: vissza 1-re

Page 38: Kölcsönös kizárás (bináris és nembináris szemaforok)

P és V primitívek• Primitív: megszakíthatatlan (oszthatatlan) mûvelet

• P primitív: a paraméterül kapott szemafor értékének EGGYEL CSÖKKENTÉSE (bináris szemafor esetén ez a FOGLALTTÁ ÁLLÍTÁS)

• V primitív: a paraméterül kapott szemafor értékének EGGYEL NÖVELÉSE (bináris szemafor esetén ez a SZABADDÁ ÁLLÍTÁS)

• Feltétel:

–SZABAD = 1

–FOGLALT = 0

Page 39: Kölcsönös kizárás (bináris és nembináris szemaforok)

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 40: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 41: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES);

P(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 42: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES);

P(S);

ÍRÁS A MEMÓRIÁBA

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 43: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES);

P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 44: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES);

P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

V(TELE);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 45: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES); P(TELE);

P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

V(TELE);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 46: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES); P(TELE);

P(S); P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

V(TELE);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 47: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES); P(TELE);

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S);

V(TELE);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 48: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES); P(TELE);

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S); V(S);

V(TELE);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 49: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES); P(TELE);

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S); V(S);

V(TELE); V(ÜRES);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

Page 50: Kölcsönös kizárás (bináris és nembináris szemaforok)

P(ÜRES); P(TELE);

P(S); P(S);

ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL

V(S); V(S);

V(TELE); V(ÜRES);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES