logo

Bankininko algoritmas operacinėje sistemoje (OS)

Tai naudojamas bankininko algoritmas išvengti aklavietės ir paskirstyti išteklius saugiai prie kiekvieno kompiuterio sistemos proceso. ' S-State' išnagrinėja visus galimus bandymus ar veiklą, prieš nuspręsdamas, ar paskirstymas turėtų būti leistinas kiekvienam procesui. Tai taip pat padeda operacinei sistemai sėkmingai dalytis ištekliais tarp visų procesų. Bankininko algoritmas pavadintas todėl, kad jis tikrina, ar asmeniui turi būti skirta sankcija paskolos suma, ar ne, siekiant padėti banko sistemai saugiai imituoti išteklių paskirstymą. Šiame skyriuje mes išmoksime Bankininko algoritmas detaliai. Taip pat spręsime problemas remdamiesi Bankininko algoritmas . Norėdami suprasti bankininko algoritmą, pirmiausia pamatysime tikrą jo pavyzdį.

Tarkime, kad sąskaitų turėtojų skaičius konkrečiame banke yra „n“, o bendra pinigų suma banke yra „T“. Jei sąskaitos savininkas kreipiasi dėl paskolos; Pirma, bankas atima paskolos sumą iš visų grynųjų pinigų, o tada įvertina, kad grynųjų pinigų skirtumas yra didesnis nei T, kad patvirtintų paskolos sumą. Tokių veiksmų imamasi todėl, kad jei kitas asmuo kreipiasi dėl paskolos ar išima tam tikrą sumą iš banko, tai padeda bankui tvarkyti ir valdyti visus reikalus be jokių apribojimų banko sistemos funkcionalumui.

Panašiai jis veikia ir Operacinė sistema . Kai kompiuterinėje sistemoje sukuriamas naujas procesas, procesas turi pateikti operacinei sistemai visų tipų informaciją, pvz., būsimus procesus, jų išteklių užklausas, jų skaičiavimą ir vėlavimus. Remdamasi šiais kriterijais, operacinė sistema nusprendžia, kuri procesų seka turi būti vykdoma arba laukiama, kad sistemoje neatsirastų aklavietės. Todėl jis taip pat žinomas kaip aklavietės išvengimo algoritmas arba aklavietės aptikimas operacinėje sistemoje.

Privalumai

Toliau pateikiamos pagrindinės bankininko algoritmo savybės:

  1. Jame yra įvairių išteklių, atitinkančių kiekvieno proceso reikalavimus.
  2. Kiekvienas procesas turėtų pateikti operacinei sistemai informaciją apie būsimas išteklių užklausas, išteklių skaičių ir kiek laiko jie bus laikomi.
  3. Tai padeda operacinei sistemai valdyti ir valdyti proceso užklausas, susijusias su kiekvieno tipo išteklių kompiuterinėje sistemoje.
  4. Algoritmas turi Max resource atributą, kuris parodo, kad kiekvienas procesas gali turėti didžiausią sistemos išteklių skaičių.

Trūkumai

  1. Tam reikalingas fiksuotas procesų skaičius, o vykdant procesą sistemoje negali būti paleidžiami jokie papildomi procesai.
  2. Algoritmas nebeleidžia procesams keistis didžiausiais poreikiais apdorojant užduotis.
  3. Kiekvienas procesas turi iš anksto žinoti ir nurodyti maksimalų sistemos išteklių poreikį.
  4. Išteklių užklausų skaičius gali būti patenkintas per ribotą laiką, tačiau išteklių paskirstymo terminas yra vieneri metai.

Dirbant su bankininko algoritmu, jis reikalauja žinoti apie tris dalykus:

  1. Kiek kiekvienas procesas gali prašyti už kiekvieną sistemos resursą. Jis žymimas [ MAX ] prašymas.
  2. Kiek kiekvienas procesas šiuo metu turi kiekvieno resurso sistemoje. Jis žymimas [ PASKIRTA ] šaltinis.
  3. Tai rodo kiekvieno šiuo metu sistemoje turimo išteklių skaičių. Jis žymimas [ GALIMA ] šaltinis.

Toliau pateikiami svarbūs duomenų struktūrų terminai, taikomi bankininko algoritme:

Tarkime, n yra procesų skaičius, o m yra kiekvieno kompiuterinėje sistemoje naudojamo išteklių tipo skaičius.

    Yra: Tai yra „m“ ilgio masyvas, apibrėžiantis kiekvieną sistemoje galimų išteklių tipą. Kai Prieinamas [j] = K, reiškia, kad sistemoje yra R[j] tipo išteklių „K“ egzempliorių.Maks.:Tai [n x m] matrica, nurodanti, kad kiekvienas procesas P[i] gali saugoti maksimalų išteklių skaičių R[j] (kiekvienas tipas) sistemoje.Paskirstymas:Tai m x n užsakymų matrica, kuri nurodo išteklių, šiuo metu paskirstytų kiekvienam sistemos procesui, tipą. Kai Paskirstymas [i, j] = K, tai reiškia, kad procesui P[i] šiuo metu sistemoje yra paskirstyta K R[j] tipo išteklių egzempliorių.Reikia:Tai M x N matricos seka, nurodanti kiekvieno proceso likusių išteklių skaičių. Kai poreikis [i] [j] = k, procesui P[i] gali prireikti dar K Rj tipo išteklių egzempliorių, kad būtų atliktas priskirtas darbas.
    Nedd[i][j] = Max[i][j] – paskirstymas[i][j].Baigti: Tai eilės vektorius m . Jame yra Būlio reikšmė (true/false), nurodanti, ar procesas buvo priskirtas prašomiems ištekliams ir visi ištekliai buvo išleisti užbaigus užduotį.

Bankininko algoritmas yra saugos algoritmo ir išteklių užklausos algoritmo derinys, skirtas valdyti procesus ir išvengti aklavietės sistemoje:

Saugos algoritmas

Tai yra saugos algoritmas, naudojamas patikrinti, ar sistema yra saugios būsenos, ar laikosi saugios sekos bankininko algoritme:

1. Yra du vektoriai Wok ir Baigti ilgio m ir n saugos algoritme.

Inicijuoti: Darbas = Yra
Baigti [i] = klaidinga; jei I = 0, 1, 2, 3, 4… n - 1.

2. Patikrinkite kiekvieno išteklių tipo [i] prieinamumo būseną, pvz.:

Reikia [i]<= work
Baigti[i] == klaidinga
Jei i neegzistuoja, pereikite prie 4 veiksmo.

3. Darbas = Darbas +Paskirstymas(i) // norint gauti naują išteklių paskirstymą

Baigti [i] = tiesa

Norėdami patikrinti išteklių prieinamumo kitam procesui būseną, pereikite prie 2 veiksmo.

4. Jei baigti[i] == tiesa; tai reiškia, kad sistema yra saugi visiems procesams.

Išteklių užklausos algoritmas

Išteklių užklausos algoritmas tikrina, kaip sistema elgsis, kai procesas pateikia kiekvieno tipo išteklių užklausą sistemoje kaip užklausų matricą.

Sukurkime išteklių užklausų masyvą R[i] kiekvienam procesui P[i]. Jei išteklių užklausai[j] lygus „K“, o tai reiškia, kad procesui P[i] sistemoje reikia „k“ R[j] tipo išteklių egzempliorių.

1. Kai skaičius prašomų išteklių kiekvieno tipo yra mažesnis nei Reikia išteklius, pereikite prie 2 veiksmo ir, jei sąlyga nepavyksta, o tai reiškia, kad procesas P[i] viršija didžiausią reikalavimą ištekliui. Kaip rodo posakis:

burbulas rūšiuoti java

Jei užklausa (i)<= need
Eikite į 2 veiksmą;

2. Ir kai kiekvieno tipo prašomų išteklių skaičius yra mažesnis nei kiekvienam procesui turimas išteklius, pereikite prie (3) veiksmo. Kaip rodo posakis:

Jei užklausa (i)<= available
Kitu atveju procesas P[i] turi laukti ištekliaus, nes jo negalima naudoti.

3. Kai reikalaujamas išteklius priskiriamas procesui keičiant būseną:

Yra = Yra - Užklausa
Paskirstymas (i) = paskirstymas (i) + užklausa (i)
Reikiai= Reikiai- Prašymasi

Kai išteklių paskirstymo būsena yra saugi, jos ištekliai paskirstomi procesui P(i). Ir jei nauja būsena yra nesaugi, procesas P (i) turi laukti kiekvieno tipo užklausos R (i) ir atkurti seną išteklių paskirstymo būseną.

Pavyzdys: Apsvarstykite sistemą, kurioje yra penki procesai P1, P2, P3, P4, P5 ir trys išteklių tipai A, B ir C. Toliau pateikiami išteklių tipai: A turi 10, B turi 5, o išteklių tipas C turi 7 egzempliorius.

Procesas Paskirstymas
A B C
Maks
A B C
Yra
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

Atsakykite į šiuos klausimus naudodami bankininko algoritmą:

  1. Kas yra poreikio matricos nuoroda?
  2. Nustatykite, ar sistema saugi, ar ne.
  3. Kas atsitiks, jei resursų užklausa (1, 0, 0) procesui P1 sistema gali priimti šią užklausą iš karto?

Metai. 2: Poreikio matricos kontekstas yra toks:

Reikia [i] = maksimalus [i] – paskirstymas [i]
P1 poreikis: (7, 5, 3) – (0, 1, 0) = 7, 4, 3
P2 poreikis: (3, 2, 2) – (2, 0, 0) = 1, 2, 2
P3 poreikis: (9, 0, 2) – (3, 0, 2) = 6, 0, 0
P4 poreikis: (2, 2, 2) – (2, 1, 1) = 0, 1, 1
P5 poreikis: (4, 3, 3) – (0, 0, 2) = 4, 3, 1

java sąrašus
Procesas Reikia
A B C
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Taigi mes sukūrėme poreikio matricą.

Ans. 2: taikykite bankininko algoritmą:

Galimi A, B ir C ištekliai yra 3, 3 ir 2.

Dabar patikriname, ar kiekvienam procesui yra prieinama kiekvieno tipo išteklių užklausa.

1 žingsnis: Procesui P1:

Reikia<= available< p>

7, 4, 3<= 2 3, condition is klaidinga.

Taigi, mes nagrinėjame kitą procesą, P2.

2 žingsnis: Procesui P2:

Reikia<= available< p>

1, 2, 2<= 2 3, condition tiesa

Naujas galimas = galimas + paskirstymas

(3, 3, 2) + (2, 0, 0) => 5, 3, 2

Panašiai nagrinėjame kitą procesą P3.

3 veiksmas: Procesui P3:

P3 Reikia<= available< p>

6, 0, 0<= 2 5, 3, condition is klaidinga.

Panašiai nagrinėjame kitą procesą, P4.

4 veiksmas: Procesui P4:

P4 Reikia<= available< p>

0, 1, 1<= 2 5, 3, condition is tiesa

Naujas prieinamas išteklius = prieinamas + paskirstymas

5, 3, 2 + 2, 1, 1 => 7, 4, 3

Panašiai nagrinėjame kitą procesą P5.

5 veiksmas: Procesui P5:

P5 Reikia<= available< p>

4, 3, 1<= 3 7, 4, condition is tiesa

Naujas prieinamas išteklius = prieinamas + paskirstymas

7, 4, 3 + 0, 0, 2 => 7, 4, 5

Dabar dar kartą išnagrinėjame kiekvieną procesų P1 ir P3 išteklių užklausą.

6 veiksmas: Procesui P1:

P1 Reikia<= available< p>

7, 4, 3<= 5 7, 4, condition is tiesa

Naujas prieinamas išteklius = laisvas + paskirstymas

pakeiskite eilutę Java

7, 4, 5 + 0, 1, 0 => 7, 5, 5

Taigi, mes nagrinėjame kitą procesą P2.

7 veiksmas: Procesui P3:

P3 Reikia<= available< p>

6, 0, 0<= 5 7, 5, condition is true< p>

Naujas prieinamas išteklius = laisvas + paskirstymas

7, 5, 5 + 3, 0, 2 => 10, 5, 7

Taigi, mes vykdome bankininko algoritmą, kad surastume saugią būseną ir saugią seką, pvz., P2, P4, P5, P1 ir P3.

Metai. 3: Norėdami patenkinti Prašymą (1, 0, 2), pirmiausia turime tai patikrinti Prašymas<= available< strong>, tai yra (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>