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ää.