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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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