logo

Bankár algoritmusa az operációs rendszerben (OS)

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:

  1. Különféle erőforrásokat tartalmaz, amelyek megfelelnek az egyes folyamatok követelményeinek.
  2. 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.
  3. 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.
  4. 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

  1. Fix számú folyamatot igényel, és a folyamat végrehajtása közben további folyamatok nem indíthatók el a rendszerben.
  2. 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.
  3. Minden folyamatnak ismernie kell és előre meg kell adnia a rendszer maximális erőforrásigényét.
  4. 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:

  1. Mennyit kérhetnek az egyes folyamatok a rendszer egyes erőforrásaiért. Ezt a [ MAX ] kérés.
  2. Mennyit tartanak jelenleg az egyes folyamatok egy rendszerben az egyes erőforrások. Ezt a [ KIBOCSÁTVA ] forrás.
  3. 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.

    Elérhető: Ez egy „m” hosszúságú tömb, amely meghatározza a rendszerben elérhető minden egyes erőforrástípust. Ha Elérhető[j] = K, az azt jelenti, hogy az R[j] típusú erőforrások „K” példánya elérhető a rendszerben.Max:Ez egy [n x m] mátrix, amely azt jelzi, hogy minden P[i] folyamat a maximális számú R[j] erőforrást (mindegyik típus) képes tárolni egy rendszerben.Kiosztás:Ez egy m x n rendelésből álló mátrix, amely a rendszer egyes folyamataihoz jelenleg lefoglalt erőforrások típusát jelzi. Ha az allokáció [i, j] = K, az azt jelenti, hogy a P[i] folyamatnak jelenleg K darab R[j] típusú erőforrás-példánya van lefoglalva a rendszerben.Szükség:Ez egy M x N mátrixsorozat, amely az egyes folyamatokhoz fennmaradó erőforrások számát reprezentálja. Ha a Need[i] [j] = k, akkor a P[i] folyamatnak további K darab Rj típusú erőforrásra lehet szüksége a hozzárendelt munka elvégzéséhez.
    Nedd[i][j] = Max[i][j] – Kiosztás[i][j].Befejez: Ez a sorrend vektora m . Tartalmaz egy logikai értéket (igaz/hamis), amely azt jelzi, hogy a folyamat hozzá van-e rendelve a kért erőforrásokhoz, és az összes erőforrást felszabadították-e a feladat befejezése után.

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:

  1. Mi a szükségleti mátrix hivatkozása?
  2. Határozza meg, hogy a rendszer biztonságos-e vagy sem.
  3. 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>