Ez egy bankár algoritmus elkerülje a holtpontot és forrásokat kiosztani biztonságosan a számítógépes rendszer minden folyamatához. A ' S-State' megvizsgál minden lehetséges tesztet vagy tevékenységet, mielőtt eldönti, hogy engedélyezni kell-e az allokációt az egyes folyamatokhoz. Ezenkívül segíti az operációs rendszert az erőforrások sikeres megosztásában az összes folyamat között. A bankár algoritmusát azért nevezték el, mert ellenőrzi, hogy kell-e szankcionálni egy személyt egy hitelösszegre, vagy sem, hogy segítse a bankrendszert az erőforrások biztonságos elosztásában. Ebben a részben megtanuljuk a Bankár algoritmusa részletesen. A problémákat is az alapján fogjuk megoldani Bankár algoritmusa . Ahhoz, hogy megértsük a Bankár algoritmusát, először egy valódi szópéldát fogunk látni rá.
Tegyük fel, hogy egy adott bankban a számlatulajdonosok száma „n”, a bankban lévő összes pénz pedig „T”. Ha egy számlatulajdonos kölcsönt kér; először a bank levonja a kölcsön összegét a teljes készpénzből, majd a kölcsön összegének jóváhagyásához megbecsüli, hogy a készpénzbeli különbözet nagyobb, mint T. Ezekre a lépésekre azért kerül sor, mert ha valaki hitelt kér vagy felvesz a bankból valamilyen összeget, az segít a banknak mindent elintézni és működtetni anélkül, hogy a bankrendszer funkcionalitását korlátozná.
Hasonlóképpen működik egy operációs rendszer . Amikor egy számítógépes rendszerben új folyamatot hoznak létre, a folyamatnak minden típusú információt meg kell adnia az operációs rendszer számára, például a közelgő folyamatokról, az erőforrásaikra vonatkozó kérésekről, a számlálásról és a késésekről. Ezen kritériumok alapján az operációs rendszer dönti el, hogy melyik folyamatsorozatot kell végrehajtani vagy várni, hogy ne forduljon elő holtpont a rendszerben. Ezért más néven holtpont elkerülő algoritmus vagy holtpont észlelése az operációs rendszerben.
Előnyök
A Banker algoritmusának alapvető jellemzői a következők:
- Különféle erőforrásokat tartalmaz, amelyek megfelelnek az egyes folyamatok követelményeinek.
- Minden folyamatnak információt kell szolgáltatnia az operációs rendszer számára a közelgő erőforráskérésekről, az erőforrások számáról és az erőforrások tárolásának időtartamáról.
- Segíti az operációs rendszert a számítógépes rendszer minden erőforrástípusára vonatkozó folyamatkérések kezelésében és vezérlésében.
- Az algoritmus rendelkezik egy Max erőforrás attribútummal, amely azt jelzi, hogy az egyes folyamatok maximális számú erőforrást tartalmazhatnak egy rendszerben.
Hátrányok
- Fix számú folyamatot igényel, és a folyamat végrehajtása közben további folyamatok nem indíthatók el a rendszerben.
- Az algoritmus már nem teszi lehetővé a folyamatok számára, hogy maximális szükségleteiket kicseréljék a feladatok feldolgozása közben.
- Minden folyamatnak ismernie kell és előre meg kell adnia a rendszer maximális erőforrásigényét.
- Az erőforrásigények száma véges idő alatt adható, de az erőforrások elosztásának határideje egy év.
Amikor egy bankár algoritmusával dolgozik, három dologra van szüksége:
- Mennyit kérhetnek az egyes folyamatok a rendszer egyes erőforrásaiért. Ezt a [ MAX ] kérés.
- Mennyit tartanak jelenleg az egyes folyamatok egy rendszerben az egyes erőforrások. Ezt a [ KIBOCSÁTVA ] forrás.
- A rendszerben jelenleg elérhető egyes erőforrások számát jelenti. Ezt a [ ELÉRHETŐ ] forrás.
A bankár algoritmusában alkalmazott fontos adatszerkezeti kifejezések a következők:
Tegyük fel, hogy n a folyamatok száma, m pedig a számítógépes rendszerben használt egyes erőforrástípusok száma.
Nedd[i][j] = Max[i][j] – Kiosztás[i][j].
A Banker's Algorithm a biztonsági algoritmus és az erőforráskérés algoritmusának kombinációja a folyamatok vezérlésére és a rendszerben a holtpontok elkerülésére:
Biztonsági algoritmus
Ez egy biztonsági algoritmus, amellyel ellenőrizhető, hogy egy rendszer biztonságos állapotban van-e vagy sem, vagy követi-e a bankár algoritmusának biztonságos sorrendjét:
1. Két vektor van Wok és Befejez m és n hosszúságú biztonsági algoritmusban.
Inicializálás: Munka = Elérhető
Befejezés[i] = hamis; ha I = 0, 1, 2, 3, 4… n - 1.
2. Ellenőrizze az egyes erőforrástípusok [i] elérhetőségi állapotát, például:
Kell[i]<= work
Befejezés[i] == hamis
Ha az i nem létezik, folytassa a 4. lépéssel.=>
3. Munka = Work +Allocation(i) // az új erőforrás-kiosztáshoz
Befejezés[i] = igaz
Folytassa a 2. lépéssel az erőforrások rendelkezésre állásának állapotának ellenőrzéséhez a következő folyamathoz.
4. Ha Befejezés[i] == igaz; ez azt jelenti, hogy a rendszer minden folyamat számára biztonságos.
Erőforrás-igénylési algoritmus
Az erőforráskérés algoritmusa ellenőrzi, hogyan fog viselkedni egy rendszer, amikor egy folyamat kérési mátrixként minden típusú erőforrás-kérést végrehajt a rendszerben.
ábécé számokként
Hozzon létre egy R[i] erőforrás-kérelem tömböt minden P[i] folyamathoz. Ha az Erőforráskérésén[j] egyenlő 'K'-val, ami azt jelenti, hogy a P[i] folyamatnak 'k' R[j] típusú erőforrás-példányra van szüksége a rendszerben.
1. Amikor a száma kért forrásokat mindegyik típus kisebb, mint a Szükség erőforrások, lépjen a 2. lépésre, és ha a feltétel sikertelen, ami azt jelenti, hogy a P[i] folyamat meghaladja az erőforrásra vonatkozó maximális igényét. Ahogy a kifejezés sugallja:
Ha kéri (i)<= need
Folytassa a 2. lépéssel;=>
2. Ha pedig az egyes típusú kért erőforrások száma kevesebb, mint az egyes folyamatokhoz rendelkezésre álló erőforrások száma, folytassa a (3) lépéssel. Ahogy a kifejezés sugallja:
Ha kéri (i)<= available
Else A P[i] folyamatnak várnia kell az erőforrásra, mivel az nem használható.=>
3. Amikor a kért erőforrást állapotváltoztatással allokálják a folyamathoz:
Elérhető = Elérhető - Kérelem
Kiosztás(i) = Kiosztás(i) + Kérés (i)
Szükségén= Szükség vanén- Kérésén
Amikor az erőforrás-allokációs állapot biztonságos, erőforrásai a P(i) folyamathoz kerülnek. És ha az új állapot nem biztonságos, a P(i) folyamatnak várnia kell az R(i) kérés minden típusára, és vissza kell állítania a régi erőforrás-allokációs állapotot.
Példa: Tekintsünk egy rendszert, amely öt P1, P2, P3, P4, P5 folyamatot és három A, B és C erőforrástípust tartalmaz. A következő erőforrástípusok vannak: A-nak 10, B-nek 5, a C erőforrástípusnak pedig 7 példánya van.
Folyamat | Kiosztás A B C | Max A B C | Elérhető A B C |
---|---|---|---|
P1 | 0 1 0 | 7 5 3 | 3 3 2 |
P2 | 200 | 3 2 2 | |
P3 | 3 0 2 | 9 0 2 | |
P4 | 2 1 1 | 2 2 2 | |
P5 | 0 0 2 | 4 3 3 |
Válaszoljon a következő kérdésekre a bankár algoritmusával:
- Mi a szükségleti mátrix hivatkozása?
- Határozza meg, hogy a rendszer biztonságos-e vagy sem.
- Mi történik, ha a P1 folyamathoz tartozó erőforráskérés (1, 0, 0) a rendszer azonnal el tudja fogadni ezt a kérést?
Évek. 2: A szükséges mátrix kontextusa a következő:
Szükség [i] = Max. [i] – Felosztás [i]
P1 szükségessége: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
P2 szükségessége: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
P3 szükségessége: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
P4 szükségessége: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
P5 szükségessége: (4, 3, 3) - (0, 0, 2) = 4, 3, 1
Folyamat | Szükség A B C |
---|---|
P1 | 7 4 3 |
P2 | 1 2 2 |
P3 | 6 0 0 |
P4 | 0 1 1 |
P5 | 4 3 1 |
Ezért létrehoztuk a szükséglet mátrixát.
Ans. 2: Alkalmazza a bankár algoritmusát:
Az A, B és C elérhető forrásai a 3, 3 és 2.
Most ellenőrizzük, hogy az egyes erőforrás-kérés típusok elérhetőek-e az egyes folyamatokhoz.
1. lépés: A P1 folyamathoz:
Szükség<= available< p>
7, 4, 3<= 2 3, condition is hamis .=>
Tehát megvizsgálunk egy másik folyamatot, a P2-t.
2. lépés: A P2 folyamathoz:
Szükség<= available< p>
1, 2, 2<= 2 3, condition igaz=>
Új elérhető = elérhető + kiosztás
(3, 3, 2) + (2, 0, 0) => 5, 3, 2
Hasonlóképpen egy másik P3 folyamatot is megvizsgálunk.
rekurzió java-ban
3. lépés: A P3 folyamathoz:
P3 Szükséges<= available< p>
6, 0, 0<= 2 5, 3, condition is hamis .=>
Hasonlóképpen egy másik folyamatot is vizsgálunk, a P4-et.
4. lépés: A P4 folyamathoz:
P4 Szükséges<= available< p>
0, 1, 1<= 2 5, 3, condition is igaz=>
Új elérhető erőforrás = Elérhető + Kiosztás
5, 3, 2 + 2, 1, 1 => 7, 4, 3
Hasonlóképpen egy másik P5 folyamatot is megvizsgálunk.
5. lépés: A P5 folyamathoz:
P5 Szükséges<= available< p>
4, 3, 1<= 3 7, 4, condition is igaz=>
Új elérhető erőforrás = Elérhető + Kiosztás
7, 4, 3 + 0, 0, 2 => 7, 4, 5
Most ismét megvizsgáljuk a P1 és P3 folyamatok erőforrás-igénylésének egyes típusait.
6. lépés: A P1 folyamathoz:
P1 Szükséges<= available< p>
7, 4, 3<= 5 7, 4, condition is igaz=>
Új elérhető erőforrás = Elérhető + Kiosztás
7, 4, 5 + 0, 1, 0 => 7, 5, 5
Tehát megvizsgálunk egy másik P2 folyamatot.
7. lépés: A P3 folyamathoz:
P3 Szükséges<= available< p>
6, 0, 0<= 5 7, 5, condition is true< p>
Új elérhető erőforrás = Elérhető + Kiosztás
7, 5, 5 + 3, 0, 2 => 10, 5, 7
Ezért végrehajtjuk a bankár algoritmusát, hogy megtaláljuk a biztonságos állapotot és a biztonságos sorozatot, mint például a P2, P4, P5, P1 és P3.
Évek. 3: A Kérés (1, 0, 2) teljesítéséhez először ezt kell ellenőriznünk Kérés<= available< strong>, azaz (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>
=>=>