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ások Kölcsönös kizárás termelõ folyamat közös adat- terület fogyasztó folyamat Termelõ / fogyasztó probléma
Közösen használt erõforrások Kölcsönös kizárás termelõ folyamat közös adat- terület fogyasztó folyamat 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)
Közösen használt erõforrások Kölcsönös kizárás szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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!
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 1. a szemafor olvasása
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 1. a szemafor olvasása 2. a beolvasott érték vizsgálata
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 1. a szemafor olvasása 2. a beolvasott érték vizsgálata 3. ha szabad: a szemafor foglaltra állítása
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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)
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 1. a szemafor olvasása 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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 5. az erõforrás használata (írás a közös memóriába) 6. a szemafor szabadra állítása
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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 (írás a közös memóriába) 6. a szemafor szabadra állítása
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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.
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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.
JÓ EZ ?? szemafor termelõ folyamat közös adat- terület fogyasztó 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. JÓ EZ ??
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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.
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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)
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
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S); ÍRÁS A MEMÓRIÁBA
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S); ÍRÁS A MEMÓRIÁBA V(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S); P(S); ÍRÁS A MEMÓRIÁBA V(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S); P(S); ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL V(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S); P(S); ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL V(S); V(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat P(S); P(S); ÍRÁS A MEMÓRIÁBA OLV. A MEMÓRIÁBÓL V(S); V(S);
POSTALÁDA
Postaláda kezelés S termelõ folyamat közös adat- terület fogyasztó folyamat Postaláda: olyan közös adatterület, ahová EGYNÉL TÖBB (pl. N db.) üzenet írható
Postaláda kezelés S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES 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 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
szemafor termelõ folyamat közös adat- terület fogyasztó folyamat 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
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES);
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES); P(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES); P(S); ÍRÁS A MEMÓRIÁBA
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES); P(S); ÍRÁS A MEMÓRIÁBA V(S);
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES); P(S); ÍRÁS A MEMÓRIÁBA V(S); V(TELE);
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES); P(TELE); P(S); ÍRÁS A MEMÓRIÁBA V(S); V(TELE);
S termelõ folyamat közös adat- terület fogyasztó folyamat TELE ÜRES P(ÜRES); P(TELE); P(S); P(S); ÍRÁS A MEMÓRIÁBA V(S); V(TELE);
S termelõ folyamat közös adat- terület fogyasztó folyamat 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);
S termelõ folyamat közös adat- terület fogyasztó folyamat 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);
S termelõ folyamat közös adat- terület fogyasztó folyamat 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);
S termelõ folyamat közös adat- terület fogyasztó folyamat 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);