logo

Algoritmul bancherului în sistemul de operare (OS)

Este un algoritm bancher folosit pentru evitarea blocajului și aloca resurse în siguranță la fiecare proces din sistemul informatic. ' S-State' examinează toate testele sau activitățile posibile înainte de a decide dacă alocarea ar trebui permisă fiecărui proces. De asemenea, ajută sistemul de operare să partajeze cu succes resursele între toate procesele. Algoritmul bancherului este numit deoarece verifică dacă o persoană ar trebui sancționată cu o sumă de împrumut sau nu pentru a ajuta sistemul bancar să simuleze în siguranță resursele de alocare. În această secțiune, vom învăța Algoritmul bancherului detaliat. De asemenea, vom rezolva probleme pe baza Algoritmul bancherului . Pentru a înțelege mai întâi algoritmul bancherului, vom vedea un exemplu real al acestuia.

Să presupunem că numărul deținătorilor de conturi dintr-o anumită bancă este „n”, iar suma totală a banilor dintr-o bancă este „T”. Dacă un titular de cont solicită un împrumut; mai întâi, banca scade suma împrumutului din numerarul total și apoi estimează că diferența de numerar este mai mare decât T pentru a aproba suma împrumutului. Acești pași sunt întreprinși deoarece, dacă o altă persoană solicită un împrumut sau retrage o sumă de la bancă, aceasta ajută banca să gestioneze și să opereze toate lucrurile fără nicio restricție în funcționalitatea sistemului bancar.

În mod similar, funcționează într-un sistem de operare . Atunci când un nou proces este creat într-un sistem informatic, procesul trebuie să furnizeze toate tipurile de informații sistemului de operare, cum ar fi procesele viitoare, solicitările de resurse ale acestora, numărarea acestora și întârzierile. Pe baza acestor criterii, sistemul de operare decide ce secvență de proces ar trebui să fie executată sau așteptată, astfel încât să nu apară blocaj într-un sistem. Prin urmare, este cunoscut și ca algoritm de evitare a blocajului sau detectarea blocajului în sistemul de operare.

Avantaje

Următoarele sunt caracteristicile esențiale ale algoritmului lui Banker:

  1. Conține diverse resurse care îndeplinesc cerințele fiecărui proces.
  2. Fiecare proces ar trebui să furnizeze informații sistemului de operare pentru cererile de resurse viitoare, numărul de resurse și cât timp vor fi păstrate resursele.
  3. Ajută sistemul de operare să gestioneze și să controleze cererile de proces pentru fiecare tip de resursă din sistemul informatic.
  4. Algoritmul are un atribut de resurse Max care reprezintă indică faptul că fiecare proces poate deține numărul maxim de resurse dintr-un sistem.

Dezavantaje

  1. Necesită un număr fix de procese și nu pot fi pornite procese suplimentare în sistem în timpul executării procesului.
  2. Algoritmul nu mai permite proceselor să-și schimbe nevoile maxime în timp ce își procesează sarcinile.
  3. Fiecare proces trebuie să cunoască și să precizeze în prealabil necesarul maxim de resurse pentru sistem.
  4. Numărul de cereri de resurse poate fi acordat într-un timp finit, dar termenul limită pentru alocarea resurselor este de un an.

Când lucrezi cu algoritmul unui bancher, acesta solicită să știi despre trei lucruri:

  1. Cât poate solicita fiecare proces pentru fiecare resursă din sistem. Este notat cu [ MAX ] cerere.
  2. Cât de mult deține în prezent fiecare proces fiecare resursă dintr-un sistem. Este notat cu [ ALOCAT ] resursă.
  3. Acesta reprezintă numărul fiecărei resurse disponibile în prezent în sistem. Este notat cu [ DISPONIBIL ] resursă.

Mai jos sunt termenii importanți ai structurilor de date aplicați în algoritmul bancherului, după cum urmează:

Să presupunem că n este numărul de procese și m este numărul fiecărui tip de resursă utilizat într-un sistem informatic.

conține subșir de caractere java
    Disponibil: este o matrice de lungime „m” care definește fiecare tip de resursă disponibilă în sistem. Când Disponibil[j] = K, înseamnă că „K” instanțe de tip Resurse R[j] sunt disponibile în sistem.Max:Este o matrice [n x m] care indică fiecare proces P[i] poate stoca numărul maxim de resurse R[j] (fiecare tip) într-un sistem.Alocare:Este o matrice de m x n ordine care indică tipul de resurse alocate în prezent fiecărui proces din sistem. Când Alocarea [i, j] = K, înseamnă că procesului P[i] îi sunt alocate în prezent K instanțe de tip Resurse R[j] în sistem.Nevoie:Este o secvență de matrice M x N care reprezintă numărul de resurse rămase pentru fiecare proces. Când Nevoia[i] [j] = k, atunci procesul P[i] poate necesita K mai multe instanțe de resurse de tip Rj pentru a finaliza munca atribuită.
    Nedd[i][j] = Max[i][j] - Alocare[i][j].finalizarea: Este vectorul comenzii m . Include o valoare booleană (adevărat/fals) care indică dacă procesul a fost alocat resurselor solicitate și toate resursele au fost eliberate după terminarea sarcinii sale.

Algoritmul Bankerului este combinația dintre algoritmul de siguranță și algoritmul de solicitare de resurse pentru a controla procesele și a evita blocajul într-un sistem:

Algoritm de siguranță

Este un algoritm de siguranță folosit pentru a verifica dacă un sistem este sau nu într-o stare de siguranță sau urmează secvența sigură din algoritmul unui bancher:

1. Sunt doi vectori Wok și finalizarea de lungime m și n într-un algoritm de siguranță.

Inițializare: lucru = disponibil
Finish[i] = fals; pentru I = 0, 1, 2, 3, 4… n - 1.

2. Verificați starea disponibilității pentru fiecare tip de resurse [i], cum ar fi:

Am nevoie de[i]<= work
Termină[i] == fals
Dacă i-ul nu există, treceți la pasul 4.

3. Work = Work +Allocation(i) // pentru a obține o nouă alocare de resurse

Finish[i] = adevărat

Treceți la pasul 2 pentru a verifica starea disponibilității resurselor pentru următorul proces.

4. Dacă Finish[i] == adevărat; înseamnă că sistemul este sigur pentru toate procesele.

Algoritmul de solicitare a resurselor

Un algoritm de solicitare de resurse verifică modul în care se va comporta un sistem atunci când un proces face fiecare tip de solicitare de resurse dintr-un sistem ca o matrice de solicitare.

Să creăm o matrice de solicitare de resurse R[i] pentru fiecare proces P[i]. Dacă cererea de resursei[j] egal cu „K”, ceea ce înseamnă că procesul P[i] necesită „k” instanțe de tip Resurse R[j] în sistem.

1. Când numărul de resursele solicitate de fiecare tip este mai mic decât Nevoie resurse, treceți la pasul 2 și dacă condiția eșuează, ceea ce înseamnă că procesul P[i] depășește revendicarea maximă pentru resursă. După cum sugerează expresia:

len of string în java

Dacă cererea (i)<= need
Treceți la pasul 2;

2. Și când numărul de resurse solicitate de fiecare tip este mai mic decât resursa disponibilă pentru fiecare proces, treceți la pasul (3). După cum sugerează expresia:

Dacă cererea (i)<= available
Altfel, Procesul P[i] trebuie să aștepte resursa, deoarece nu este disponibilă pentru utilizare.

3. Când resursa solicitată este alocată procesului prin schimbarea stării:

Disponibil = Disponibil - Solicitare
Alocare(i) = Alocare(i) + Solicitare (i)
Nevoiei= Nevoiei- Cererei

Când starea de alocare a resurselor este sigură, resursele sale sunt alocate procesului P(i). Și dacă noua stare este nesigură, Procesul P (i) trebuie să aștepte fiecare tip de Cerere R(i) și să restabilească vechea stare de alocare a resurselor.

Exemplu: Luați în considerare un sistem care conține cinci procese P1, P2, P3, P4, P5 și cele trei tipuri de resurse A, B și C. Următoarele sunt tipurile de resurse: A are 10, B are 5 și tipul de resursă C are 7 instanțe.

Proces Alocare
A B C
Max
A B C
Disponibil
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

Răspundeți la următoarele întrebări folosind algoritmul bancherului:

  1. Care este referința matricei nevoilor?
  2. Stabiliți dacă sistemul este sigur sau nu.
  3. Ce se va întâmpla dacă cererea de resurse (1, 0, 0) pentru procesul P1 poate sistemul să accepte această solicitare imediat?

Ani. 2: Contextul matricei nevoilor este următorul:

Necesar [i] = Max [i] - Alocare [i]
Nevoia P1: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
Nevoia de P2: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
Nevoia de P3: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
Nevoia pentru P4: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
Nevoia de P5: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

Proces Nevoie
A B C
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Prin urmare, am creat contextul matricei nevoilor.

Ans. 2: Aplicați algoritmul bancherului:

Resursele disponibile pentru A, B și C sunt 3, 3 și 2.

matrice de returnare java

Acum verificăm dacă fiecare tip de cerere de resurse este disponibil pentru fiecare proces.

Pasul 1: Pentru procesul P1:

Nevoie<= available< p>

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

Deci, examinăm un alt proces, P2.

Pasul 2: Pentru procesul P2:

Nevoie<= available< p>

1, 2, 2<= 2 3, condition Adevărat

Nou disponibil = disponibil + Alocare

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

În mod similar, examinăm un alt proces P3.

Pasul 3: Pentru procesul P3:

P3 nevoie<= available< p>

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

În mod similar, examinăm un alt proces, P4.

Pasul 4: Pentru procesul P4:

P4 Nevoie<= available< p>

0, 1, 1<= 2 5, 3, condition is Adevărat

Nouă resursă disponibilă = Disponibil + Alocare

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

În mod similar, examinăm un alt proces P5.

2 la 1 multiplexor

Pasul 5: Pentru procesul P5:

P5 Nevoie<= available< p>

4, 3, 1<= 3 7, 4, condition is Adevărat

Resursă nouă disponibilă = Disponibil + Alocare

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

Acum, examinăm din nou fiecare tip de solicitare de resurse pentru procesele P1 și P3.

Pasul 6: Pentru procesul P1:

P1 Nevoie<= available< p>

7, 4, 3<= 5 7, 4, condition is Adevărat

Nouă resursă disponibilă = Disponibil + Alocare

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

Deci, examinăm un alt proces P2.

Pasul 7: Pentru procesul P3:

P3 nevoie<= available< p>

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

Nouă resursă disponibilă = Disponibil + Alocare

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

Prin urmare, executăm algoritmul bancherului pentru a găsi starea de siguranță și secvența sigură precum P2, P4, P5, P1 și P3.

Ani. 3: Pentru acordarea Cererii (1, 0, 2), mai întâi trebuie să verificăm asta Cerere<= available< strong>, adică (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>


javafx