bankár algoritmus
Kiejtés
- IPA: [ ˈbɒŋkaːrɒlɡoritmuʃ]
Főnév
- Bankár-algoritmus (Banker’s Algorithm)
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.
—
- Alapfogalmak
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.
—
- Algoritmus lépései
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.
—
- Példa
- Adatok:
- Erőforrástípusok: - Available:
- Max:
- Allocation:
- 1. Need mátrix számítása:
- 2. Biztonságos állapot ellenőrzése:
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ó.
- Biztonságos sorrend:
A rendszer biztonságos állapotban van.
—
- Python implementáció
“‘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 = [False] * num_processes safe_sequence = []
while True: found = False for i in range(num_processes): if not finish[i] and all(need[i] <= work): work += allocation[i] finish[i] = True safe_sequence.append(i) found = True if not found: break
return all(finish), safe_sequence
- Adatok available = np.array([3, 3, 2]) max_matrix = np.array([ [7, 5, 3], [3, 2, 2], [9, 0, 2], [2, 2, 2], [4, 3, 3] ]) allocation = np.array([ [0, 1, 0], [2, 0, 0], [3, 0, 2], [2, 1, 1], [0, 0, 2] ])
- Biztonság ellenőrzése is_safe, safe_sequence = is_safe_state(available, max_matrix, allocation)
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, 3, 4, 0, 2] “‘
—
- Előnyök
1. Holtpontra érzékeny: - Biztosítja, hogy a rendszer ne kerüljön holtpontra. 2. Pontosság: - Biztonságos állapotok pontos ellenőrzése.
—
- Hátrányok
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.
—
- Alkalmazások
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.
—
- Összegzés
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.
Fordítások
- bankár algoritmus - Értelmező szótár (MEK)
- bankár algoritmus - Etimológiai szótár (UMIL)
- bankár algoritmus - Szótár.net (hu-hu)
- bankár algoritmus - DeepL (hu-de)
- bankár algoritmus - Яндекс (hu-ru)
- bankár algoritmus - Google (hu-en)
- bankár algoritmus - Helyesírási szótár (MTA)
- bankár algoritmus - Wikidata
- bankár algoritmus - Wikipédia (magyar)