logo

Bankers algoritme i operativsystemet (OS)

Det er en bankmandsalgoritme, der bruges til undgå dødvande og tildele ressourcer sikkert til hver proces i computersystemet. Det ' S-stat' undersøger alle mulige tests eller aktiviteter, inden det besluttes, om tildelingen skal tillades til hver proces. Det hjælper også operativsystemet med at dele ressourcerne mellem alle processerne. Bankmandens algoritme er navngivet, fordi den kontrollerer, om en person skal idømmes et lånebeløb eller ej, for at hjælpe banksystemet med sikkert at simulere allokeringsressourcer. I dette afsnit lærer vi Bankmands algoritme i detaljer. Vi vil også løse problemer baseret på Bankmands algoritme . For at forstå bankmandens algoritme vil vi først se et rigtigt ordeksempel på det.

Antag, at antallet af kontohavere i en bestemt bank er 'n', og de samlede penge i en bank er 'T'. Hvis en kontohaver ansøger om et lån; først trækker banken lånebeløbet fra fulde kontanter og estimerer derefter, at kontantdifferencen er større end T for at godkende lånebeløbet. Disse trin tages, fordi hvis en anden person ansøger om et lån eller hæver et beløb i banken, hjælper det banken med at administrere og drive alle ting uden nogen begrænsning i banksystemets funktionalitet.

På samme måde fungerer det i en operativ system . Når en ny proces oprettes i et computersystem, skal processen give alle typer information til operativsystemet, såsom kommende processer, anmodninger om deres ressourcer, optælling af dem og forsinkelser. Ud fra disse kriterier beslutter operativsystemet, hvilken processekvens der skal udføres eller ventes, så der ikke opstår dødvande i et system. Derfor er det også kendt som algoritme til undgåelse af dødvande eller detektering af dødvande i operativsystemet.

Fordele

Følgende er de væsentlige egenskaber ved bankmandens algoritme:

  1. Den indeholder forskellige ressourcer, der opfylder kravene i hver proces.
  2. Hver proces skal give oplysninger til operativsystemet om kommende ressourceanmodninger, antallet af ressourcer og hvor længe ressourcerne vil blive tilbageholdt.
  3. Det hjælper operativsystemet med at administrere og kontrollere procesanmodninger for hver type ressource i computersystemet.
  4. Algoritmen har en Max ressource-attribut, der repræsenterer angiver, at hver proces kan indeholde det maksimale antal ressourcer i et system.

Ulemper

  1. Det kræver et fast antal processer, og der kan ikke startes yderligere processer i systemet, mens processen udføres.
  2. Algoritmen tillader ikke længere processerne at udveksle deres maksimale behov, mens de behandler dens opgaver.
  3. Hver proces skal på forhånd kende og angive deres maksimale ressourcebehov for systemet.
  4. Antallet af ressourceanmodninger kan tildeles på en begrænset tid, men fristen for tildeling af ressourcerne er et år.

Når du arbejder med en bankmands algoritme, anmoder den om at vide om tre ting:

  1. Hvor meget hver proces kan anmode om for hver ressource i systemet. Det er angivet med [ MAKS ] anmodning.
  2. Hvor meget hver proces i øjeblikket rummer hver ressource i et system. Det er angivet med [ TILDELES ] ressource.
  3. Det repræsenterer antallet af hver ressource, der i øjeblikket er tilgængelig i systemet. Det er angivet med [ LEDIG ] ressource.

Følgende er de vigtige datastrukturer, der anvendes i bankmandens algoritme som følger:

Antag, at n er antallet af processer, og m er antallet af hver type ressource, der bruges i et computersystem.

    Ledig: Det er et array med længden 'm', der definerer hver type ressource, der er tilgængelig i systemet. Når Tilgængelig[j] = K betyder, at 'K'-instanser af Ressourcetype R[j] er tilgængelige i systemet.Maks.:Det er en [n x m] matrix, der angiver, at hver proces P[i] kan lagre det maksimale antal ressourcer R[j] (hver type) i et system.Tildeling:Det er en matrix af m x n ordrer, der angiver typen af ​​ressourcer, der i øjeblikket er allokeret til hver proces i systemet. Når Allokering [i, j] = K, betyder det, at proces P[i] i øjeblikket er tildelt K instanser af Ressourcetype R[j] i systemet.Brug for:Det er en M x N matrixsekvens, der repræsenterer antallet af resterende ressourcer for hver proces. Når Behov[i] [j] = k, så kræver proces P[i] muligvis K flere forekomster af ressourcetypen Rj for at fuldføre det tildelte arbejde.
    Nedd[i][j] = Max[i][j] - Allokering[i][j].Afslut: Det er vektoren for ordren m . Det inkluderer en boolsk værdi (sand/falsk), der angiver, om processen er blevet allokeret til de anmodede ressourcer, og alle ressourcer er blevet frigivet efter at have afsluttet sin opgave.

Bankers algoritme er kombinationen af ​​sikkerhedsalgoritmen og ressourceanmodningsalgoritmen for at kontrollere processerne og undgå dødvande i et system:

Sikkerhedsalgoritme

Det er en sikkerhedsalgoritme, der bruges til at kontrollere, om et system er i en sikker tilstand eller ej eller følger den sikre sekvens i en bankmands algoritme:

1. Der er to vektorer Wok og Afslut af længden m og n i en sikkerhedsalgoritme.

Initialiser: Arbejde = Tilgængelig
Afslut[i] = falsk; for I = 0, 1, 2, 3, 4… n - 1.

2. Tjek tilgængelighedsstatus for hver type ressourcer [i], såsom:

Har brug for[i]<= work
Afslut[i] == falsk
Hvis i'et ikke eksisterer, skal du gå til trin 4.

3. Arbejde = Arbejde +Allokering(i) // for at få ny ressourceallokering

Afslut[i] = sand

Gå til trin 2 for at kontrollere status for ressourcetilgængelighed for den næste proces.

4. Hvis Afslut[i] == sand; det betyder, at systemet er sikkert for alle processer.

Ressourceanmodningsalgoritme

En ressourceanmodningsalgoritme kontrollerer, hvordan et system vil opføre sig, når en proces laver hver type ressourceanmodning i et system som en anmodningsmatrix.

Lad oprette et ressourceanmodningsarray R[i] for hver proces P[i]. Hvis ressourceanmodningenjeg[j] lig med 'K', hvilket betyder, at processen P[i] kræver 'k' forekomster af ressourcetypen R[j] i systemet.

1. Når antallet af efterspurgte ressourcer af hver type er mindre end Brug for ressourcer, gå til trin 2, og hvis betingelsen fejler, hvilket betyder, at processen P[i] overskrider dens maksimale krav for ressourcen. Som udtrykket antyder:

Hvis anmodning(i)<= need
Gå til trin 2;

2. Og når antallet af anmodede ressourcer af hver type er mindre end den tilgængelige ressource for hver proces, skal du gå til trin (3). Som udtrykket antyder:

Hvis anmodning(i)<= available
Ellers skal proces P[i] vente på ressourcen, da den ikke er tilgængelig til brug.

3. Når den anmodede ressource er allokeret til processen ved at ændre tilstand:

Tilgængelig = Tilgængelig - Forespørgsel
Allokering(i) = Tildeling(i) + Anmodning (i)
Brug forjeg= Behovjeg- Anmodningjeg

Når ressourceallokeringstilstanden er sikker, allokeres dens ressourcer til processen P(i). Og hvis den nye tilstand er usikker, skal proces P(i) vente på hver type anmodning R(i) og genoprette den gamle ressourceallokeringstilstand.

Eksempel: Overvej et system, der indeholder fem processer P1, P2, P3, P4, P5 og de tre ressourcetyper A, B og C. Følgende er ressourcetyperne: A har 10, B har 5 og ressourcetypen C har 7 instanser.

Behandle Tildeling
A B C
Maks
A B C
Ledig
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

Besvar følgende spørgsmål ved hjælp af bankmandens algoritme:

  1. Hvad er referencen for behovsmatrixen?
  2. Afgør, om systemet er sikkert eller ej.
  3. Hvad vil der ske, hvis ressourceanmodningen (1, 0, 0) for proces P1 kan systemet acceptere denne anmodning med det samme?

Flere år. 2: Konteksten af ​​behovsmatrixen er som følger:

js global variabel

Behov [i] = Max [i] - Tildeling [i]
Behov for P1: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
Behov for P2: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
Behov for P3: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
Behov for P4: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
Behov for P5: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

Behandle Brug for
A B C
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Derfor skabte vi konteksten af ​​behovsmatrix.

Ans. 2: Anvend bankmandens algoritme:

Tilgængelige ressourcer for A, B og C er 3, 3 og 2.

Nu tjekker vi, om hver type ressourceanmodning er tilgængelig for hver proces.

Trin 1: For proces P1:

Brug for<= available< p>

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

Så vi undersøger en anden proces, P2.

Trin 2: For proces P2:

Brug for<= available< p>

1, 2, 2<= 2 3, condition rigtigt

Ny tilgængelig = tilgængelig + Tildeling

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

På samme måde undersøger vi en anden proces P3.

Trin 3: For proces P3:

P3 Behov<= available< p>

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

På samme måde undersøger vi en anden proces, P4.

Trin 4: For proces P4:

P4 Behov<= available< p>

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

Ny tilgængelig ressource = Tilgængelig + Allokering

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

På samme måde undersøger vi en anden proces P5.

Trin 5: For proces P5:

P5 Behov<= available< p>

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

Ny tilgængelig ressource = Tilgængelig + Allokering

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

Nu undersøger vi igen hver type ressourceanmodning for processerne P1 og P3.

Trin 6: For proces P1:

P1 Behov<= available< p>

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

Ny tilgængelig ressource = Tilgængelig + Allokering

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

Så vi undersøger en anden proces P2.

Trin 7: For proces P3:

P3 Behov<= available< p>

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

Ny tilgængelig ressource = Tilgængelig + Allokering

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

Derfor udfører vi bankens algoritme for at finde den sikre tilstand og den sikre sekvens som P2, P4, P5, P1 og P3.

Flere år. 3: For at imødekomme anmodningen (1, 0, 2) skal vi først kontrollere det Anmodning<= available< strong>, det vil sige (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>