Kölcsönös kizárás (bináris és nembináris szemaforok)
-
Upload
eagan-oneil -
Category
Documents
-
view
24 -
download
0
description
Transcript of 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
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