Tartalom. Operációs rendszerek. 4.1 Holtpont definíciója. Bevezetés helyett... Rendszermodell 1. A klasszikus példa...



Hasonló dokumentumok
Operációs rendszerek. Holtpont

Operációs rendszerek be és kivitelkezelése, holtpont fogalma, kialakulásának feltételei, holtpontkezelési stratégiák, bankár algoritmus.

Operációs rendszerek II. Holtpont

Operációs rendszerek

Nyíregyházi Főiskola Matematika és Informatika Intézete. Holtpont (Deadlock) Alapfogalmak, példák, ábrázolás. Biztonságos és nem biztonságos állapot

Előadás_#06. Előadás_06-1 -

Operációs rendszerek II. Folyamatok ütemezése

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Operációs rendszerek MINB240 UNIX, Windows NT ütemezése Holtpontkezelés. UNIX ütemezése. Algoritmus követelményei. 4.

UNIX ütemezése. Operációs rendszerek MINB240 UNIX, Windows NT ütemezése Holtpontkezelés. Algoritmus követelményei. UNIX ütemezés jellemzése

Termelő-fogyaszt. fogyasztó modell

Felvételi tematika INFORMATIKA

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek. Folyamatok ütemezése

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

22. GRÁFOK ÁBRÁZOLÁSA

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Tartalom. Operációs rendszerek Bevezetés CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés

Programozási módszertan. Mohó algoritmusok

(kernel3d vizualizáció: kernel245_graph.mpg)

Dr. Illés Zoltán

Rekurzió. Dr. Iványi Péter

Occam 1. Készítette: Szabó Éva

INFORMATIKA javítókulcs 2016

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Adatszerkezetek I. 1. előadás

Algoritmusok és adatszerkezetek I. 1. előadás

Bevezetés az informatikába

Számítógépes döntéstámogatás. Genetikus algoritmusok

2. Visszalépéses keresés

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

angolul: greedy algorithms, románul: algoritmi greedy

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Visszalépéses keresés

Nem biztos, hogy mindenhol helytáll, helyenként hiányos, de az eddigi kérdések össze vannak gyűjtve őszi félév első zhval bezárólag.

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Programozási segédlet

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

2. Visszalépéses stratégia

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Tartalom. Operációs rendszerek. Precedencia. 3.2 Szinkronizáció. 3.1 Folyamatokból álló rendszerek. Együttműködő folyamatok használatának indokai

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

11. Elosztott állománykezelés. Operációs rendszerek. Elosztott állománykezelés. Teljesítmény növelése. Az állományokra hivatkozás. Az állományok nevei

Bevezetés a programozásba. 12. Előadás: 8 királynő

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfelméleti feladatok. c f

Számítógép-rendszerek fontos jellemzői (Hardver és Szoftver):

Operációs rendszerek Folyamatok 1.1

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Egyszerű programozási tételek

A félév során előkerülő témakörök

Matematikai és Informatikai Intézet. 4. Folyamatok

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök

Amortizációs költségelemzés

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Előadás_#03. Előadás_03-1 -

Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék

(Diszkrét idejű Markov-láncok állapotainak

Struktúra nélküli adatszerkezetek

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Adatszerkezetek 2. Dr. Iványi Péter

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Összetett programozási tételek

9. Állományok kezelése. Operációs rendszerek. Állomány (file) Könyvtár. Az állománykezelő feladatai. Az állományrendszer réteges implementációja

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Operációs rendszerek. 3. előadás Ütemezés

Algoritmizálás és adatmodellezés tanítása 1. előadás

Adatbázis rendszerek Gy: Algoritmusok C-ben

2018, Diszkrét matematika

Operációs rendszerek feladatai

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Programozás alapjai II. (7. ea) C++

Láthatósági kérdések

A Novitax ügyviteli programrendszer első telepítése

Számítógép és programozás 2

Egyszerű programozási tételek

Adatszerkezetek II. 1. előadás

Rekurzív algoritmusok

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Mesterséges Intelligencia MI

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

5. Hét Sorrendi hálózatok

Átírás:

Tartalom Operációs rendszerek 4. A holtpont és kezelése Simon Gyula Bevezetés A holtpont kialakulásának szükséges feltételei Az erőforrás-használati gráf A holtpont kezelése holtpont megelőzése holtpont elkerülése holtpont felismerése és megszüntetése Kombinált stratégiák Kommunikációs holtpontok Felhasznált irodalom: Kóczy-Kondorosi (szerk.): Operációs rendszerek mérnöki megközelítésben Tanenbaum: Modern Operating Systems 2nd. Ed. Silberschatz, Galvin, Gagne: Operating System Concepts 2 Bevezetés helyett... 4.1 Holtpont definíciója Folyamatok egy halmaza akkor van holtponton, ha a halmaz minden folyamata olyan eseményre* vár, amelyet csak egy másik, ugyancsak halmazbeli (várakozó) folyamat tudna előidézni. Az esemény többnyire egy erőforrás felszabadulását jelenti. 3 4 A klasszikus példa... When two trains approach each other at a crossing, they shall both come to a full stop and neither shall start up until the other has gone. Kansas állam törvénye a XX. sz. elejéről Rendszermodell 1. A rendszerben véges számú erőforrás áll rendelkezésre véges számú folyamat számára Az erőforrások osztályokba sorolhatók, az egy osztályon belüli erőforrások azonosak (egy igénylő folyamat bármelyiket igénybe veheti) Az erőforrás lehet elvehető (preemptív) [pl. CPU, memória] nem elvehető (nem preemptív) [pl. nyomtató] 5 6 1

Rendszermodell 2. 4.2 Holtpont kialakulásának szükséges feltételei Erőforrás használata 1. Igénylés. Ha az igény nem teljesíthető (erőforrás foglalt) akkor a folyamat várakozik. 2. Felhasználás. A folyamat az erőforrást kizárólagosan használja. 3. Felszabadítás. Folyamat elengedi az erőforrást. Ha más folyamatok várakoznak rá, akkor valamelyik várakozó folyamat továbbléphet. Az 1. és 3. lépések általában rendszerhívások request release (device) open close (file) allocate free (memory) Holtpont akkor jöhet létre, ha az alábbi négy feltétel egyszerre teljesül Kölcsönös kizárás Egy erőforrást egyszerre legfeljebb egy folyamat használhat. Foglalva várakozás Van olyan folyamat, amely lefoglalva tart erőforrásokat, miközben más erőforrásokat kér (és azokra várakozik). Nem elvehető erőforrások vannak a rendszerben. Az erőforrást a folyamat csak önszántából szabadíthatja fel. Körkörös várakozás Létezik egy olyan {P 0, P 1,..., P n } sorozat, amelyben P 0 egy P 1 által lefoglalva tartott erőforrásra vár, P i egy P i+1 által foglaltra, végül P n pedig egy P 0 által foglalt erőforrásra vár. 7 8 4.3 Az erőforrás-használati gráf Az erőforrás-használati gráf A rendszer pillanatnyi állapotát a rendszer erőforráshasználati gráfja (resource allocation graph) írja le. Folyamat P = {P 1, P 2,..., P n }, a rendszer folyamatainak halmaza R = {R 1, R 2,..., R n }, az erőforrás-osztályok halmaza P i R i erőforrás igénylés R i P i erőforrás használat Erőforrás osztály 4 erőforrással P i egy R i osztálybeli erőforrást igényel P i Ha az igény kielégíthető, akkor az erőforrás igénylés átvált erőforrás használattá. P i egy R i osztálybeli erőforrást foglal P i R j R j 9 10 Példa holtpont kialakulására Egy erőforrás-használati gráf A: Requests R Requests S Release R Release S B: Requests S Requests T Release S Release T C: Requests T Requests R Release T Release R R S T R S T R S T A requests R B requests S C requests T R S T R S T R S T A requests S B requests T C requests R R 1 -et P 2 használja P 1 vár R 1 -re R 2 egy-egy példányát használja P 1 és P 2 R 4 -et nem használják... 11 12 2

Egy erőforrás-használati gráf holtponttal Egy erőforrás-használati gráf körrel, de holtpont nélkül Mindhárom folyamat vár Az igényelt erőforrások felszabadítását csak ezen folyamatok tudnák elvégezni Az erőforrásokat P 2 és P 4 is felszabadíthatja! A ciklus szükséges és elégséges feltétel, ha minden erőforrásosztályba csak egy erőforrás tartozik. Szükséges, de nem elégséges, ha egy erőforrás-osztály több egyedet is tartalmaz. 13 14 A kör és a holtpont... Példa: holtpont elkerülése Ha nincs kör, nincs holtpont. (A kör szükséges feltétel.) Ha van kör és minden erőforrás-osztályba csak egy erőforrás tartozik, akkor holtpont van. (Egyszeres erőforrásoknál a kör elégséges feltétel is.) Ha van kör és egy erőforrás-osztály több egyedet is tartalmaz, akkor holtpont kialakulhat, de nem szükségszerűen. (A kör léte többszörös erőforrásoknál nem elégséges feltétel.) 15 A: Requests R Requests S Release R Release S B: Requests S Requests T Release S Release T C: Requests T Requests R Release T Release R R S T R S T R S T A requests R CrequestsT ArequestsS R S T R S T R S T CrequestsR A releases R A releases S 16 4.4 A holtpont kezelése Stratégiák: 1. Strucc algoritmus: nem veszünk tudomást a problémáról és nem teszünk semmit. Bizonyos típusú rendszereknél (nagy kockázat) nem engedhető meg. Megengedhető kisebb kockázatú rendszereknél, ahol tolerálható a kiszállunk-beszállunk elv. Mérlegelni kell a probléma súlyát és a megoldás árát. 2. Védekezés holtpont kialakulása ellen Az erőforrások használatánál bevezetünk szabályokat, ami biztosítja a holtpont elkerülését. holtpont megelőzés (deadlock prevention) holtpont elkerülés (deadlock avoidance) 3. Detektálás/feloldás: a holtpont kialakulása után avatkozunk bele holtpont felismerés (deadlock recognition) holtpont megszüntetés (deadlock recovery) 4.5 Holtpont megelőzés (deadlock prevention) A holtpont kialakulásnak szükséges feltételek közül valamelyiket kizárjuk. Kölcsönös kizárás Foglalva várakozás Erőforrások nem elvehetők Körkörös várakozás 17 18 3

4.5.1 Foglalva várakozás kizárása Két stratégia: 1. A folyamat elindulásakor egyszerre igényli az összes szükséges erőforrást. Csak akkor mehet tovább, ha mindegyiket megkapta. 2. Folyamat csak akkor igényelhet, ha más erőforrást nem foglal. Problémák: rossz erőforrás kihasználtság, szükségesnél tovább birtokolják azokat fennáll a kiéheztetés veszélye: ha egy folyamat több "népszerű" erőforrást használ, nagy az esélye, hogy egyszerre az összes erőforrást soha nem kapja meg. Példa: Számítás szalagról nyomtatóra. Erőforrások: szalagos tároló diszk nyomtató 19 4.5.2 Erőforrások elvétele Két hasonló stratégia 1. Ha egy folyamat valamely erőforrásigénye nem elégíthető ki, akkor az összes többit is elvesszük tőle. Ezekre a továbbiakban várakozik. Akkor futhat tovább, ha az összes erőforrásigényét egyszerre i lehet elégíteni. 2. Ha egy P folyamatnak olyan erőforrásigénye van, amelyeket más várakozó {Q i } folyamatok foglalnak, akkor az erőforrásokat Q i folyamatoktól elveszik és P futhat tovább (de csak ha P összes igénye egyszerre kielégíthető!), különben pedig P is várakozik. Problémák: Az erőforrások egy része csak úgy vehető el, ha közben a futási eredmények is elvesznek. Fennáll a kiéheztetés veszélye. 20 4.5.3 Körkörös várakozás elkerülése Rendeljünk a rendszer összes erőforrásához egy növekvő számsorozat egy-egy elemét. Két algoritmus: 1. A folyamatok csak növekvő sorrendben igényelhetik az erőforrásokat. 2. A folyamat csak akkor igényelhet egy erőforrást, ha nem használ az igényeltnél magasabb sorszámút. Problémák: Nehéz az erőforrásokat olyan módon beszámozni, hogy az tükrözze az erőforrás szokásos sorrendjét. Interaktív rendszereknél nem jó (nem lehet megjósolni a folyamatok erőforrás használatát). Logikailag függő folyamatokra alkalmazható. 4.6 Holtpont elkerülése A kért erőforrásokat óvatosan allokáljuk. A rendszerminden kérésnél mérlegeli, hogy nem vezet-e holtpontveszélyre a kérés, fenntartható-e a biztonságos állapot. Feltételezések: Ismerjük a folyamatok erőforrás-típusonkénti max igényeit. Feltételezzük, hogy ha egy folyamat minden erőforrásigényét kielégítettük, az véges időn belül lefut. 21 22 4.6.1 Biztonságos állapot A biztonságos állapot és a holtpont Biztonságos állapot: létezik az összes folyamatot tartalmazó biztonságos sorozat. Biztonságos sorozat: a folyamatok olyan {P 0,P 1,..., P n } sorozata, ahol bármelyik P k folyamat erőforrásigénye kielégíthető a rendelkezésre álló, valamit a többi P i (i < k) folyamat által használt (és majdan felszabadított) erőforrással. A rendszer biztonságos állapotban van nincs holtpont A rendszer nem biztonságos állapotban van holtpont lehetséges Holtpont elkerülése: biztosítani kell, hogy a rendszer soha nem kerül nem biztonságos állapotba holtpont nem biztonságos biztonságos 23 24 4

Példa: biztonságos állapot Példa: nem biztonságos állapot A kiinduló állapot biztonságos (csak 1 erőforrás-osztályra) A második állapot már nem biztonságos! A 3 9 B 2 4 Szabad: 3 A 3 9 B 4 4 Szabad: 1 Aktuális foglalás Max. igény A 3 9 A 3 9 A 3 9 B 0 - B 0 - B 0 - C 7 7 C 0 - Szabad: 5 Szabad: 0 Szabad: 7 A 3 9 B 2 4 Szabad: 3 A 4 9 B 2 4 Szabad: 2 A 4 9 B 4 4 Szabad: 0 A 4 9 B - - Szabad: 4 Éppen szabad erőforrások száma 25 26 4.6.2 Bankár algoritmus (Dijkstra,1965) Az algoritmus előfeltételei: 1. Az erőforrás-osztályok több egyedből állhatnak 2. Minden folyamat előzetesen megadja maximális igényét 3. Egy igénylő folyamat várakozni kényszerülhet 4. Ha egy folyamat megkapja az igényelt erőforrásait, véges időn belül visszaadja. Bankár algoritmus - adatszerkezetek N = folyamatok száma M= erőforrás-osztályok száma SZABAD: m elemű vektor. Ha SZABAD[j] = k, akkor az R j típusú erőforrásból k példány elérhető. MAX: n x m méretű mátrix. A MAX[i] m elemű sorvektor jelzi, hogy az egyes erőforrásosztályokból P i folyamat maximum hány példányt használhat (2. előfeltétel alapján). FOGLAL: n x m méretű mátrix. A FOGLAL[i] m elemű sorvektor jelzi, hogy az egyes erőforrásosztályokból P i folyamat jelenleg hány példányt használ. MÉG: n x m méretű mátrix. A MÉG[i] m elemű sorvektor jelzi, hogy az egyes erőforrásosztályokból P i folyamatnak feladata befejezéséhez még hány példányra lehet szüksége. KÉR: n x m méretű mátrix. A KÉR[i] m elemű sorvektor jelzi P i folyamat kérését az egyes erőforrásosztályokra. Nyilvánvalóan: MÉG[i,j] = MAX[i,j] FOGLAL[i,j]. 27 28 Bankár algoritmus kérés feldolgozása Alapötlet: Ha a kérés egyébként teljesíthető, akkor tegyünk úgy, mintha már teljesítettük volna. Vizsgáljuk meg, hogy ez az állapot biztonságos-e. Ha igen, valóban teljesíthetjük a kérést. 29 Bankár algoritmus kérés feldolgozása Pi folyamat kéri a KÉR[i] erőforrásokat: A kérés ellenőrzése: if KÉR[i] > MÉG[i] then STOP; (HIBA: túllépte a maximális igényt) if KÉR[i] > SZABAD then VÉGE; (Most nincs elég szabad erőforrás) 1. A nyilvántartás átállítása az új állapotra: SZABAD := SZABAD - KÉR[i]; FOGLAL[i] := FOGLAL[i] + KÉR[i]; MÉG[i] := MÉG[i] - KÉR[i]; 2. Vizsgálat: a létrejött állapot biztonságos-e? (lásd később) 3. if BIZTONSÁGOS then KÉRÉS TELJESÍTÉSE; else állapot visszaállítása a (2) pont előttire: SZABAD := SZABAD + KÉR[i]; FOGLAL[i] := FOGLAL[i]-KÉR[i]; MÉG[i] := MÉG[i] - KÉR[i]; KÉRÉS ELUTASÍTÁSA: A FOLYAMATNAK VÁRNIA KELL 30 5

Bankár algoritmus biztonságos állapot vizsgálata Működés (biztonságos sorozat keresése): Keressünk olyan folyamatot, ami le tud futni a most éppen rendelkezésre álló szabad erőforráskészlettel. (Ha nincs ilyen, de van várakozó folyamat, akkor holtpont van) A gondolatban lefuttatott folyamat által birtokolt erőforrásokat visszaadjuk, így most már több erőforrással próbálkozhatunk újra. Újabb változók: SZABAD_MOST: mint SZABAD. Munkaváltozó. LEFUT: n elemű vektor. Ha LEFUT[j] = igaz, akkor P j folyamat mindenképpen le tud futni. Bankár algoritmus biztonságos állapot vizsgálata B1. Kezdőérték beállítása: SZABAD_MOST := SZABAD LEFUT[i] := hamis minden i-re (i=1,2,...,n) B2. Továbblépésre esélyes folyamatok keresése: Keress i-t amelyre (LEFUT[i] = HAMIS AND MÉG[i] <= SZABAD_MOST); if van ilyen i, then SZABAD_MOST := SZABAD_MOST + FOGLAL[i]; LEFUT[i] := igaz; ismételd a B2. lépést else folytasd a B3. lépéssel B3. Kiértékelés if LEFUT[i] = igaz minden i-re (i=1,2,...,n), then BIZTONSÁGOS else NEM BIZTONSÁGOS (Pi folyamatok, amelyekre LEFUT[i] = hamis holtpontra juthatnak) 31 32 Bankár algoritmus jellemzés Az algoritmus problémái: Időigényes Az alapfeltételek (ismert folyamatszám, maximális igények, folyamat biztos befejeződése) nem biztosíthatók. Túlzott óvatosság, feleslegesen várakoztat folyamatokat (az erőforrások kihasználtsága rosszabb, mint holtpont elkerülés nélkül). 5 folyamat: P 0, P 1, P 2, P 3, P 4 3 erőforrás-osztály: A (10), B (5), C (7) A rendszer kiinduló állapota: P 0 0 1 0 7 5 3 3 3 2 7 4 3 P 1 2 0 0 3 2 2 1 2 2 Ez biztonságos állapot, mert van egy biztonságos sorozat: pl. <P 1, P 3, P 4, P 2, P 0 > 33 34 Teljesíthető-e P 1 (1,0,2) kérése? Ellenőrzés: (1,0,2) <= (1,2,2) (KÉR[1] <= MÉG[1]: OK) (1,0,2) <= (1,2,2) (KÉR[1] <= SZABAD: OK) Kiinduló állapot: P 0 0 1 0 7 5 3 3 3 2 7 4 3 P 1 2 0 0 3 2 2 1 2 2 Kérés teljesítése (1,0,2) P 0 0 1 0 7 5 3 230 7 4 3 P 1 302 3 2 2 0 2 0 Az algoritmusban ez a SZABAD_MOST átmeneti változóban tárolódik 35 36 6

Biztonságos sorozat keresése 1. P 1 le tud futni P 0 0 1 0 7 5 3 2 3 0 7 4 3 P 1 3 0 2 3 2 2 0 2 0 Biztonságos sorozat keresése 1. P 1 lefut és... P 0 0 1 0 7 5 3 2 3 0 7 4 3 P 1 302 3 2 2 0 2 0 37 38 Biztonságos sorozat keresése 1. P 1 lefut és erőforrásait visszaadja P 0 0 1 0 7 5 3 532 7 4 3 Biztonságos sorozat keresése 2. P 3 P 0 0 1 0 7 5 3 5 3 2 7 4 3 39 40 Biztonságos sorozat keresése 2. P 3 lefut P 0 0 1 0 7 5 3 743 7 4 3 P 3 000 2 2 2 - Biztonságos sorozat keresése 3. P 4 P 0 0 1 0 7 5 3 7 4 3 7 4 3 41 42 7

Biztonságos sorozat keresése 3. P 4 lefut P 0 0 1 0 7 5 3 745 7 4 3 P 4 0 0 0 4 3 3 - Biztonságos sorozat keresése 4. P 2 P 0 0 1 0 7 5 3 7 4 5 7 4 3 P 4 0 0 0 4 3 3-43 44 Biztonságos sorozat keresése 4. P 2 lefut P 0 0 1 0 7 5 3 10 4 7 7 4 3 P 2 000 9 0 2 - P 4 0 0 0 4 3 3 - Biztonságos sorozat keresése 5. P 0 P 0 0 1 0 7 5 3 10 4 7 7 4 3 P 2 000 902 - P 4 0 0 0 4 3 3-45 46 Biztonságos sorozat keresése 5. P 0 lefut P 0 0 0 0 7 5 3 10 5 7 - P 2 000 902 - P 4 0 0 0 4 3 3 - Biztonságos sorozat: <P 1, P 3, P 4, P 2, P 0 > Bankár algoritmus gyakorló példák 1. Teljesíthető-e P 4 (3,3,0) kérése? 2. Teljesíthető-e P 0 (0,2,0) kérése? Kiinduló állapot: Foglal Max Szabad P 0 0 1 0 7 5 3 3 3 2 P 1 2 0 0 3 2 2 P 2 3 0 2 9 0 2 P 3 2 1 1 2 2 2 P 4 0 0 2 4 3 3 47 48 8

4.7 A holtpont felismerése Egyszeres erőforrások esete Kör keresése az erőforrás-foglalási gráfban Többszörös erőforrások esete Itt a kör nem elégséges feltétel, tehát bonyolultabb vizsgálat kell. Hasonlóan a biztonságos állapot vizsgálatánál közölt algoritmushoz (vigyázat: nem ugyanaz az algoritmus!) Coffman algoritmus - adatszerkezetek N = folyamatok száma M= erőforrás-osztályok száma SZABAD: m elemű vektor. Ha SZABAD[j] = k, akkor az R j típusú erőforrásból k példány elérhető. SZABAD_MOST: mint SZABAD. Munkaváltozó. FOGLAL: n x m méretű mátrix. A FOGLAL[i] m elemű sorvektor jelzi, hogy az egyes erőforrásosztályokból P i folyamat jelenleg hány példányt használ. KÉR: n x m méretű mátrix. A KÉR[i] m elemű sorvektor jelzi P i folyamat kérését az egyes erőforrásosztályokra. LEFUT: n elemű vektor. Ha LEFUT[j] = igaz, akkor a P j folyamat a mostani erőforrásigények szerint le tud futni. 49 50 Holtpont-detektáló algoritmus (Coffman algoritmus) Coffman algoritmus példa C1. Kezdőérték beállítása: SZABAD_MOST := SZABAD LEFUT[i] := hamis minden i-re (i=1,2,...,n) C2. Továbblépésre esélyes folyamatok keresése: Keress i-t amelyre (LEFUT[i] = HAMIS AND KÉR[i] <= SZABAD_MOST); if van ilyen i, then SZABAD_MOST := SZABAD_MOST + FOGLAL[i]; LEFUT[i] := igaz; ismételd a B2. lépést else folytasd a B3. lépéssel C3. Kiértékelés if LEFUT[i] = igaz minden i-re (i=1,2,...,n), then NINCS HOLTPONT else HOLTPONT: Azon Pi folyamatok, amelyekre LEFUT[i] = hamis 51 Kiinduló állapot: Foglal Kér Szabad P 0 0 1 0 0 0 0 0 0 0 P 1 2 0 0 2 0 2 P 2 3 0 3 0 0 0 P 3 2 1 1 1 0 0 P 4 0 0 2 0 0 2 Van-e holtpont? Nincs: <P 0, P 2, P 3, P 1, P 4 > Mi a helyzet, ha P 2 kér még egy C-t? Holtpont: (P 1, P 2, P 3, P 4 ) 52 A holtpont-detektálás időzítése Mikor kell a detektáló algoritmust futtatni? Erőforrás-igény kielégítésekor Sok időt igényel Rögtön kiderül a holtpont Tudjuk, melyik folyamat zárta be a holtpontot Meghatározott időnként Nehéz meghatározni a megfelelő gyakoriságot Túl sűrű futtatás: sok időt igényel Túl ritka futtatás: holtpont sokáig fennáll 4.8 A holtpont felszámolása Holtpont felismerése után azt - operátori beavatkozással vagy automatikusan - fel kell számolni. Módszerek: 1. Folyamatok terminálása 2. Erőforrások elvétele 53 54 9

A holtpont felszámolása: folyamatok terminálása Minden holtpontban résztvevő folyamatot megszüntetünk (radikális) Biztos, de költséges (megszűnt folyamatok eredményei elvesznek) Egyesével szüntetjük meg folyamatokat, amíg a holtpont meg nem szűnik. Minden terminálás után újabb detektálás Szempontok a folyamat kiválasztásához: hány holtpont körben szerepel mekkora a prioritása mennyi ideje futott, mennyit futna még (ha ismerjük) mennyi erőforrást tart lefoglalva mennyi további erőforrásra lenne szüksége interaktív vagy batch program 55 A holtpont felszámolása: erőforrások elvétele A holtpontra jutott folyamatoktól egyesével elvesszük az erőforrásokat. Megoldandó problémák: Kitől vegyük el és melyik erőforrást? Kiszemelt folyamatot vissza kell léptetni egy olyan állapotba, ahonnan a futását folytatni tudja (leggyakrabban újra kell kezdenie a futását). Egyes OS-ek a folyamatokhoz ellenőrzési pontokat rendelnek (checkpoint); a futást a legutóbbi ellenőrzési ponttól kell folytatni. El kell kerülni a folyamatok kiéheztetését (ne mindig ugyanattól a folyamattól vegyünk el erőforrásokat). 56 4.9 Kombinált holtpont-kezelő stratégiák 4.10 Kommunikációs holtpontok ME D/F EK ME Erőforrásokat csoportokra osztjuk, és az egyes csoportokra különböző stratégiát alkalmazunk. Pl.: Belső erőforrások (rendszertáblák, leírók, stb.) Rendszer-folyamatokat érinti. Folyamatok létrejöttekor azonos sorrendben igénylik ezen erőforrásokat, a rendezett erőforrásfoglalás könnyen megvalósítható. Operatív tár Menthető állapotú erőforrás, így alkalmazható az erőszakos elvétel módszere. Egy munkához tartozó erőforrások (állományok, eszközök) A munka leírásából ismerhetjük az igényeket, használhatunk holtpont elkerülő algoritmust. Munkaterület a lemezen (swap) általában ismert igények vannak, egyszerre kell kérni a szükséges méretet, nincs rákérés (előzetes lefoglalás). ME Holtponthelyzet nemcsak erőforrás-használat miatt alakulhat ki, hanem folyamatok tetszőleges olyan együttműködése során, amely a folyamatok körkörös várakozásra vezet. Pl. Kliens-szerver architektúrájú rendszer, ahol az ügyfelek és a szolgáltatók is folyamatok. Az ügyfél-szolgáltató lánc záródik. A gráfos reprezentáció itt is használható: várakozási gráf (wait-for graph) csomópontjai a folyamatok irányított élei pedig a várakozást jelzik (várakozóból a várakoztatóhoz vezet). 57 58 10