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

Preview:

DESCRIPTION

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

Citation preview

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

TERMELŐ - FOGYASZTÓ

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

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

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

• 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

• 1. a szemafor olvasása

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

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

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

szemafor

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

P(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

P(S);

ÍRÁS A MEMÓRIÁBA

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

P(S); P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

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

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

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

POSTALÁDA

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

• 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

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)

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

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.

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

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

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

P(ÜRES);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

P(ÜRES);

P(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

P(ÜRES);

P(S);

ÍRÁS A MEMÓRIÁBA

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

P(ÜRES);

P(S);

ÍRÁS A MEMÓRIÁBA

V(S);

termelõfolyamat

közösadat-

terület

fogyasztófolyamat

S

TELE ÜRES

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

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

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

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

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

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

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

Recommended