4 - PANKKIIRIN ALGORITMI

Laske ns. pankkiirin algoritmia käyttäen seuraava esimerkki. Järjestelmässä on kolmea resurssityyppiä A, B ja C. Resurssia A on 9 yksikköä, resurssia B 3 yksikköä ja resurssia C 6 yksikköä. Tietyllä hetkellä varaustilanne on seuraavanlainen:

prosessi     varattu   pyytänyt    maxtarve
              A B C     A B C       A B C
   p1         1 0 0     0 0 0       3 2 2
   p2         5 1 1     1 0 1       6 1 3
   p3         2 1 1     0 0 0       3 1 4
   p4         0 0 2     0 0 0       4 2 2


Prosessi P2 pyytää saada lisää yhden A-resurssin ja yhden C-resurssin. Voidaanko se myöntää? Mitä tapahtuu pankkiirin algoritmin suorituksen jälkeen? Perustele vastauksesi esittämällä pankkiirin algoritmin suoritusvaiheet.
Entä, jos ko. pyynnön olisikin esittänyt P1?

===============================================================================

Jos prosesille P2 annetaan sen haluamat resurssit:

prosessi     varattu   pyytänyt    maxtarve  lisätarve
              A B C     A B C       A B C      A B C
   p1         1 0 0     0 0 0       3 2 2      2 2 2
   p2         6 1 2     0 0 0       6 1 3      0 0 1
   p3         2 1 1     0 0 0       3 1 4      1 0 3
   p4         0 0 2     0 0 0       4 2 2      4 2 0
varattuna     9 2 5
vapaana       0 1 1

Vain P2 prosessi voi saada maksimitarpeensa täytettyä ja työnsä tehtyä, jolloin se vapauttaa kaikki hallussaan olevat resurssit. Vapaana on sen jälkeen resursseja seuraavasti 6 2 3 => resursseja riittää kaikille prosesseille. Siis P2:lle voidaan myöntää sen pyytämät resurssit.

Jos pyynnön (1 0 1 ) olisi esittänyt P1 ja sille olisi annettu sen haluamat resurssit:

prosessi     varattu   pyytänyt    maxtarve  lisätarve
              A B C     A B C       A B C      A B C
   p1         2 0 1     0 0 0       3 2 2      1 2 1
   p2         5 1 1     0 0 0       6 1 3      6 0 2
   p3         2 1 1     0 0 0       3 1 4      1 0 3
   p4         0 0 2     0 0 0       4 2 2      4 2 0
varattuna     9 2 5
vapaana       0 1 1

Vapaana ei ole yhtään resurssia A, jota kuitenkin jokainen prosessi tarvitsee maksimitarpeensa tyydyttämiseksi. Mikään prosessi ei 'pahimmassa tapauksessa' saa tarvitsemiaan resursseja eikä pysty varmasti saamaan tehtäväänsä suoritettua. Seurauksena voi olla lukkiutuminen, joten P1:lle ei voida näitä resursseja myöntää.