logo

Bankers algoritm i operativsystem (OS)

Det är en bankiralgoritm som används för undvika dödläge och fördela resurser säkert till varje process i datorsystemet. den ' S-stat' granskar alla möjliga tester eller aktiviteter innan man beslutar om tilldelningen ska tillåtas till varje process. Det hjälper också operativsystemet att framgångsrikt dela resurserna mellan alla processer. Bankirens algoritm är namngiven för att den kontrollerar om en person ska sanktioneras ett lånebelopp eller inte för att hjälpa banksystemet att säkert simulera allokeringsresurser. I det här avsnittet kommer vi att lära oss Bankers algoritm i detalj. Vi kommer också att lösa problem baserat på Bankers algoritm . För att först förstå Bankers Algorithm kommer vi att se ett riktigt ordexempel på det.

Anta att antalet kontoinnehavare i en viss bank är 'n' och att de totala pengarna i en bank är 'T'. Om en kontohavare ansöker om ett lån; först drar banken av lånebeloppet från hela kontanter och uppskattar sedan att kontantskillnaden är större än T för att godkänna lånebeloppet. Dessa åtgärder vidtas eftersom om en annan person ansöker om ett lån eller tar ut något belopp från banken, hjälper det banken att hantera och driva allt utan några begränsningar i banksystemets funktionalitet.

sträng till json java

På samma sätt fungerar det i en operativ system . När en ny process skapas i ett datorsystem måste processen tillhandahålla alla typer av information till operativsystemet som kommande processer, förfrågningar om deras resurser, räkning av dem och förseningar. Baserat på dessa kriterier bestämmer operativsystemet vilken processsekvens som ska exekveras eller väntas så att inget dödläge uppstår i ett system. Därför är det också känt som algoritm för undvikande av dödläge eller detektering av dödläge i operativsystemet.

Fördelar

Följande är de väsentliga egenskaperna hos bankirens algoritm:

  1. Den innehåller olika resurser som uppfyller kraven för varje process.
  2. Varje process bör ge information till operativsystemet för kommande resursbegäranden, antalet resurser och hur länge resurserna kommer att hållas.
  3. Det hjälper operativsystemet att hantera och kontrollera processförfrågningar för varje typ av resurs i datorsystemet.
  4. Algoritmen har ett Max resursattribut som representerar indikerar att varje process kan innehålla det maximala antalet resurser i ett system.

Nackdelar

  1. Det kräver ett fast antal processer, och inga ytterligare processer kan startas i systemet medan processen körs.
  2. Algoritmen tillåter inte längre processerna att utbyta sina maximala behov medan de bearbetar sina uppgifter.
  3. Varje process måste känna till och ange sitt maximala resursbehov i förväg för systemet.
  4. Antalet resursbegäranden kan beviljas på en begränsad tid, men tidsgränsen för tilldelning av resurserna är ett år.

När du arbetar med en bankers algoritm begär den att få veta om tre saker:

  1. Hur mycket varje process kan begära för varje resurs i systemet. Det betecknas med [ MAX ] begäran.
  2. Hur mycket varje process för närvarande rymmer varje resurs i ett system. Det betecknas med [ TILLDELAD ] resurs.
  3. Det representerar numret på varje resurs som för närvarande är tillgänglig i systemet. Det betecknas med [ TILLGÄNGLIGA ] resurs.

Följande är de viktiga datastrukturtermer som används i bankirens algoritm enligt följande:

Antag att n är antalet processer och m är antalet för varje typ av resurs som används i ett datorsystem.

    Tillgängliga: Det är en matris med längden 'm' som definierar varje typ av resurs som är tillgänglig i systemet. När Available[j] = K betyder att 'K'-instanser av Resurstyp R[j] är tillgängliga i systemet.Max:Det är en [n x m] matris som indikerar att varje process P[i] kan lagra det maximala antalet resurser R[j] (varje typ) i ett system.Tilldelning:Det är en matris av m x n order som anger vilken typ av resurser som för närvarande allokeras till varje process i systemet. När Allokering [i, j] = K betyder det att process P[i] för närvarande tilldelas K instanser av Resurstyp R[j] i systemet.Behöver:Det är en M x N matrissekvens som representerar antalet återstående resurser för varje process. När Behov[i] [j] = k, kan process P[i] kräva ytterligare K instanser av resurser typ Rj för att slutföra det tilldelade arbetet.
    Nedd[i][j] = Max[i][j] - Allokering[i][j].Avsluta: Det är ordningens vektor m . Den innehåller ett booleskt värde (true/false) som indikerar om processen har allokerats till de begärda resurserna, och alla resurser har släppts efter att dess uppgift har slutförts.

The Banker's Algorithm är kombinationen av säkerhetsalgoritmen och resursbegäranalgoritmen för att kontrollera processerna och undvika dödläge i ett system:

Säkerhetsalgoritm

Det är en säkerhetsalgoritm som används för att kontrollera om ett system är i ett säkert tillstånd eller inte eller följer den säkra sekvensen i en bankers algoritm:

1. Det finns två vektorer Wok och Avsluta av längden m och n i en säkerhetsalgoritm.

Initiera: Arbete = Tillgänglig
Finish[i] = falskt; för I = 0, 1, 2, 3, 4… n - 1.

2. Kontrollera tillgänglighetsstatusen för varje typ av resurser [i], som:

Behöver[i]<= work
Slutför[i] == falskt
Om i:et inte finns, gå till steg 4.

3. Arbete = Arbete +Allokering(i) // för att få ny resursallokering

Slut[i] = sant

Gå till steg 2 för att kontrollera status för resurstillgänglighet för nästa process.

4. Om Finish[i] == sant; det betyder att systemet är säkert för alla processer.

Algoritm för resursbegäran

En resursbegäranalgoritm kontrollerar hur ett system kommer att bete sig när en process gör varje typ av resursbegäran i ett system som en begäranmatris.

Låt skapa en resursbegäran-array R[i] för varje process P[i]. Om resursbegärani[j] lika med 'K', vilket betyder att processen P[i] kräver 'k'-instanser av Resurstyp R[j] i systemet.

1. När antalet efterfrågade resurser av varje typ är mindre än Behöver resurser, gå till steg 2 och om villkoret misslyckas, vilket innebär att processen P[i] överskrider sitt maximala anspråk på resursen. Som uttrycket antyder:

Om begäran(i)<= need
Gå till steg 2;

2. Och när antalet begärda resurser av varje typ är mindre än den tillgängliga resursen för varje process, gå till steg (3). Som uttrycket antyder:

Om begäran(i)<= available
Annars måste Process P[i] vänta på resursen eftersom den inte är tillgänglig för användning.

3. När den begärda resursen allokeras till processen genom att ändra tillstånd:

Tillgänglig = Tillgänglig - Begäran
Tilldelning(i) = Tilldelning(i) + Begäran (i)
Behöveri= Behöveri- Begärani

När resursallokeringstillståndet är säkert allokeras dess resurser till processen P(i). Och om det nya tillståndet är osäkert måste Process P(i) vänta på varje typ av begäran R(i) och återställa det gamla resursallokeringstillståndet.

Exempel: Betrakta ett system som innehåller fem processer P1, P2, P3, P4, P5 och de tre resurstyperna A, B och C. Följande är resurstyperna: A har 10, B har 5 och resurstypen C har 7 instanser.

Bearbeta Tilldelning
A B C
Max
A B C
Tillgängliga
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

Svara på följande frågor med hjälp av bankens algoritm:

  1. Vad är referensen för behovsmatrisen?
  2. Bestäm om systemet är säkert eller inte.
  3. Vad händer om resursbegäran (1, 0, 0) för process P1 kan systemet acceptera denna begäran omedelbart?

år. 2: Behovsmatrisens sammanhang är följande:

Behöver [i] = Max [i] - Tilldelning [i]
Behov för P1: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
Behov för P2: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
Behov för P3: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
Behov för P4: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
Behov för P5: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

enkel datumformaterare i java
Bearbeta Behöver
A B C
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Därför skapade vi sammanhanget med behovsmatris.

Ans. 2: Använd bankirens algoritm:

Tillgängliga resurser för A, B och C är 3, 3 och 2.

Nu kontrollerar vi om varje typ av resursbegäran är tillgänglig för varje process.

Steg 1: För process P1:

Behöver<= available< p>

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

Så vi undersöker en annan process, P2.

Steg 2: För process P2:

Behöver<= available< p>

1, 2, 2<= 2 3, condition Sann

Ny tillgänglig = tillgänglig + Allokering

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

På samma sätt undersöker vi en annan process P3.

Steg 3: För process P3:

P3 Behöver<= available< p>

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

På samma sätt undersöker vi en annan process, P4.

Steg 4: För process P4:

P4 Behöver<= available< p>

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

Ny tillgänglig resurs = Tillgänglig + Allokering

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

På samma sätt undersöker vi en annan process P5.

Steg 5: För process P5:

P5 Behöver<= available< p>

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

sträng i char java

Ny tillgänglig resurs = Tillgänglig + Allokering

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

Nu undersöker vi igen varje typ av resursbegäran för processerna P1 och P3.

Steg 6: För process P1:

P1 Behöver<= available< p>

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

Ny tillgänglig resurs = Tillgänglig + Allokering

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

Så vi undersöker en annan process P2.

Steg 7: För process P3:

P3 Behöver<= available< p>

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

Ny tillgänglig resurs = Tillgänglig + Allokering

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

Därför exekverar vi bankens algoritm för att hitta det säkra tillståndet och den säkra sekvensen som P2, P4, P5, P1 och P3.

år. 3: För att bevilja begäran (1, 0, 2) måste vi först kontrollera det Begäran<= available< strong>, det vill säga (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>