You are on page 1of 5

B) Holtpont definíciója; Holtpont kialakulásának feltételei (Coffman);

Példa holtpont kialakulására; Holtpont feloldási stratégiák


(struccpolitika, felismerés és helyreállítás, megelőzés, dinamikus
megoldás); példák; Bankár algoritms; Dijkstra algoritmus.
Holtpont definíciója

A holtpont (deadlock) az az állapot, amely akkor következhet be, amikor két (vagy több)
folyamat egyidejűleg verseng erőforrásokért, és egymást kölcsönösen blokkolják. Ha 2
folyamat közül egyik sem tud továbblépni, mert mindkettőnek éppen arra az erőforrásra lenne
szüksége, amit a másik foglal: ez a holtpont helyzet.

Példa:

Tételezzük fel, hogy egy taszk lefoglalni akarja a nyomtatót, majd utána igényli a CD-írót.
Közben egy másik taszk lefoglalni akarja a CD-írót, majd utána lefoglalni szeretné a
nyomtatót. Tegyük fel, hogy az első taszk sikeresen lefoglalta a nyomtatót, miközben ezzel
egy időben a második taszk szintén sikeresen lefoglalta a CD-írót. Most, az első taszk
megpróbálja lefoglalni a CD-írót, a második taszk pedig a nyomtatót. Egyik taszk sem fog
sikerrel járni, mert a másik taszk már tartja a zárat. Mindkét taszk a végtelenségig fog várni
arra, hogy a másik elengedje az erőforrást, de ez nem fog bekövetkezni.

Másik példa:

(az ún. "étkező filozófusok problémája", problem of the dining philosophers)

Adva van valahány filozófus, akik egy kerek asztal körül ülnek. Mindegyikük előtt van egy
tányér, a tányérok közt félúton pedig egy-egy villa. Mindegyik filozófus vacsora közben
elmélkedik, majd időnként megéhezik. Az étel kiszedésére azonban mindkét keze ügyébe eső
villát használnia kell, ha tehát valamelyik nem áll rendelkezésre, akkor várnia kell rá. A
kérdés nyilván, hogy milyen stratégiát kövessenek a filozófusok, hogy a véletlen
időközönként rájuk törő megéhezést minél kevesebb várakozással mindannyian sikeresen le
tudják küzdeni, vagyis senki ne maradjon éhen.

A klasszikus vesztes stratégia: aki megéhezik és vár a sorára, sosem ereszti el a már
megkaparintott villát, csak vár, amíg a szomszédja le nem teszi a neki kellő másik villát is. Ha
ugyanis minden filozófus egyidőben, mondjuk, a jobb villát veszi kézbe, akkor mivel soha
senki nem mond le önként az egyetlen haszontalan villájáról, soha senki nem fog tudni
továbblépni -- és mindenki éhen hal.

A holtpont (deadlock) az az állapot, amely akkor következhet be, amikor két (vagy több)
folyamat egyidejűleg verseng erőforrásokért, és egymást kölcsönösen blokkolják. Tegyük fel,
hogy P folyamat kizárólagos használatra kéri az X és Y erőforrásokat, és azokat ebben a sor-
rendben kívánja használni. Ugyanakkor Q folyamat kéri az Y és X erőforrásokat, ebben a
sorrendben. Ha P folyamat megszerezte az X erőforrást, Q folyamat pedig az Y-t, akkor egyi
sem tud továbblépni. hiszen mindkettőnek éppen arra volna szüksége, amit a másik foglal: ez
a holtpont helyzet.

Holtpont kialakulásának szükséges feltételei (Coffman):

1. kölcsönös kizárás (mutex): legalább egy – többek által igényelt – erőforrás nem
megosztható, azaz egyszerre csak egy processzus használhatja;
2. foglalva várakozás (hold & wait): valamelyik processzus már lefoglalt egy erőforrást,
és arra vár, hogy továbbiakat lefoglaljon;
3. nem elvehető erőforrások (nonpreemptive): az erőforrást a foglalótól nem lehet
kívülről – operációs rendszer beavatkozással – elvenni;
4. körkörös várakozás (circular waiting): a körben állók folyamatok mindegyike a
következő által foglalt erőforrásra vár.

Ha valamelyik nem teljesül, nincs holtponti helyzet.


Holtpont feloldási stratégiák (struccpolitika, felismerés és helyreállítás, megelőzés,
dinamikus megoldás)

Nem foglalkozunk vele: Nem foglalkozunk a Deadlock-kal (strucc-politika: Unix, Windows;


valószínűtlen eseménynek tekintjük ezt a helyzetet; a kezelése pedig költséges)

Mérlegelni kell a probléma súlyát és a megoldás árát.

Holtpont feloldás: Megelőzés

Coffman 1 (mutex) megszüntetése

– pl. nyomtató esetén háttér tár használata – DL ott is lehet!

Coffman 2 (birtoklás és továbbhaladás)

– előre meg kell adnia minden processznek, hogy milyen erőforrásokat akar használni:

con: rossz erőforrás kihasználás! a processzek nem tudják előre, hogy mennyi erőforrásra lesz
szüksége...

– minden újabb lock-olásnál, el kell engedni az összes erőforrást és csak, akkor kapja vissza,
ha az igény kielégíthető

Coffman 3 (megszakíthatatlanság)

– no chance

Coffman 4 (ciklikus erőforrás birtoklás) egy proc. egyszerre csak 1 erőforrást birtokolhat.

– con: másolás 2 medium között

A processzusok csak egy előre megadott sorrendben igényelhetik az erőforrásokat.


– pl. 1. nyomt, 2. szallag, 3. lemez, 4. robot

– con: rossz erőforrás kihasználás, nincs jó sorrend

Holtpont felismerés és helyreállítás (csak a holtpont kialakulásánál avatkozunk be)

 ha kör alakulna ki egy kéréskor, megszüntetjük a processzust

 azokat a processzusokat, amelyek hosszú ideig allokálnak erőforrást megszüntetjük


(batch rendszerekben újra indítjuk, de a rendszer állapot visszaállítás problémás –
check points, roll back.)

Holtpont felismerés (deadlock recognition)

Holtpont felszámolása (deadlock recovery)

Holtpont feloldás: Dinamikusan

Egyetlen erőforrás -> Bankár algoritmus:

Lényege: Ha jelen pillanatban ki tudjuk elégíteni valamely processz maximális igényét, akkor
biztonságos állapotban vagyunk.Ha nem, akkor bizonytalan

– Feladat:

Megtalálni azt a „pályagörébét”, amelyen biztosítható a biztonságos állapotok átmenetei.

Példák Bankár algoritms Dijkstra algoritmus

You might also like