A Bankár-algoritmus egy erőforrás-ütemezési algoritmus, amelyet Edsger W. Dijkstra javasolt. Az algoritmus célja annak biztosítása, hogy egy többfolyamatú rendszer ne kerüljön holtpontra (deadlock). Az algoritmus a biztonságos állapot fogalmán alapul, és csak akkor teljesít egy erőforrás-allokációs kérelmet, ha az a rendszer számára biztonságos állapotot eredményez.
—
1. Erőforrások: - Az erőforrások különböző típusokba vannak sorolva, például CPU-idő, memória, perifériák.
2. Folyamatok: - A rendszerben több folyamat fut, amelyek erőforrásokat igényelnek és szabadítanak fel.
3. Biztonságos állapot: - A rendszer egy állapota akkor biztonságos, ha létezik olyan sorrend a folyamatok között, amely biztosítja, hogy mindegyikük be tudja fejezni végrehajtását az erőforrások helyes felszabadítása után.
4. Erőforrás-allokációs mátrixok: - Max: A folyamatok által igényelt maximális erőforrások. - Allocation: Az egyes folyamatok által jelenleg használt erőforrások. - Need: Az erőforrások száma, amelyet a folyamatok még igényelhetnek (). - Available: Az aktuálisan elérhető erőforrások száma.
—
1. Inicializáció - Számítsd ki a Need mátrixot:
2. Biztonságossági ellenőrzés - Az algoritmus ellenőrzi, hogy a kért erőforrások kiosztása után a rendszer biztonságos állapotban marad-e: 1. Készíts egy másolatot az Available erőforrásokról. 2. Jelöld ki a folyamatokat, amelyek befejezhetők (minden ). 3. Ha egy folyamat befejeződik, szabadítsd fel az általa használt erőforrásokat, és add hozzá azokat az Available-hez. 4. Ismételd a lépéseket, amíg minden folyamat befejezhető vagy nincs több befejezhető folyamat.
3. Allokációs kérés feldolgozása - Ha egy folyamat erőforrást kér: 1. Ellenőrizd, hogy a kérés nem haladja meg Need értékét. 2. Ellenőrizd, hogy az Available erőforrások elegendők-e a kérelem teljesítéséhez. 3. Szimuláld az allokációt, és futtasd a biztonságossági ellenőrzést. 4. Ha a rendszer biztonságos marad, teljesítsd a kérelmet. Ellenkező esetben utasítsd el.
—
- Erőforrástípusok: - Available:
- Max:
- Allocation:
1. Az : - : , tehát futtatható. - Felszabadított erőforrások: .
2. : , futtatható. - Felszabadított erőforrások: .
3. : , futtatható. - Felszabadított erőforrások: .
4. : , futtatható. - Felszabadított erőforrások: .
5. : , futtatható.
A rendszer biztonságos állapotban van.
—
“‘python import numpy as np
def is_safe_state(available, max_matrix, allocation): num_processes, num_resources = allocation.shape need = max_matrix - allocation work = available.copy() finish = * num_processes safe_sequence =
while True: found = False for i in range(num_processes): if not finish and all(need <= work): work += allocation finish = True safe_sequence.append(i) found = True if not found: break
return all(finish), safe_sequence
if is_safe: print(f"A rendszer biztonságos állapotban van. Biztonságos sorrend: safe_sequence") else: print("A rendszer nem biztonságos állapotban van.") “‘
Kimenet: “‘ A rendszer biztonságos állapotban van. Biztonságos sorrend: “‘
—
1. Holtpontra érzékeny: - Biztosítja, hogy a rendszer ne kerüljön holtpontra. 2. Pontosság: - Biztonságos állapotok pontos ellenőrzése.
—
1. Számításigény: - Nagy számú folyamat és erőforrás esetén az algoritmus költséges lehet. 2. Ismétlődő kérések kezelése: - Túl gyakori erőforrás-igények esetén bonyolultabb az ütemezés.
—
1. Operációs rendszerek: - Erőforrások kiosztása és holtpontkezelés. 2. Számítógépes rendszerek: - Virtuális gépek erőforrás-kezelése. 3. Gyártási rendszerek: - Feladatok ütemezése és gépkapacitás kezelése.
—
A Bankár-algoritmus egy hatékony módszer holtpontok megelőzésére és biztonságos állapot fenntartására többfeladatos rendszerekben. Bár számításigényes lehet, alapvető eszköz az erőforráskezelés területén.