Beispiel 1
4ο»Ώ
Prozesse
3ο»Ώ
Ressourcen-Arten
R=(9β3β6β)ο»Ώ- Anzahl mΓΆglicher StΓΌcke aller Ressoucen
V=(1β1β2β)ο»Ώ- Anzahl der verfΓΌgbaren StΓΌcke aller Ressourcen
Claim Matrix
(Maximalbedarf)
C=βββ3634β2112β2342ββ ββο»Ώ
Allocation Matrix
(Aktuell beansprucht)
A=βββ1520β0110β0112ββ ββο»Ώ
Need Matrix
(Maximal beanspruchbar)
N=βββ2114β2002β2230ββ ββο»Ώ
In Matrizen stehen Zeilen fΓΌr Prozesse, Spalten fΓΌr Ressourcen
Anforderung von
P2βο»Ώ
:
Q2β=(1β0β1β)ο»Ώ
Provisorisches Erlauben - Wir setzen unsere Variablen und starten den Algorithmus:
βi:Viβ:=ViββQkiβο»ΏWeniger insgesamt verfΓΌgbar
βi:Akiβ:=Akiβ+Qkiβο»ΏMehr vonPkβο»Ώbeansprucht
βi:Nkiβ:=NkiββQkiβο»ΏWeniger Bedarf vonPkβο»Ώ
Daher setzen wir den state zu:
V=(0β1β1β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ1620β0110β0212ββ ββο»Ώ
N=βββ2014β2002β2130ββ ββο»Ώ
Wir benutzen danach den Bankers algorithm um zu untersuchen ob unser state ein safe state ist:
Wir finden heraus dass es eine Abarbeitungsreihenfolge gibt
(P2β,P1β,P3β,P4β)ο»Ώ
mit der alle Prozesse fertiggestellt werden kΓΆnnen.
Deshalb wΓ€hlen wir unsere unfinished processes nach dieser Reihenfolge in diesem Beispiel.
W:=(0β1β1β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ1620β0110β0212ββ ββο»Ώ
N=βββ2014β2002β2130ββ ββο»Ώ
Wir wΓ€hlen
P2βο»Ώ
und prΓΌfen ob
Nkiββ€Wiβο»Ώ
also
(0β0β1β)β€(0β1β1β)ο»Ώ
.
Das trifft zu - deshalb:
-
setzen wir
P2βο»Ώ
auf
finished
-
updaten
Wο»Ώ
mit
W=(6β2β3β)=(0β1β1β)+(6β1β2β)ο»Ώ
-
und setzen mit
P1βο»Ώ
fort.
W=(6β2β3β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ1020β0010β0012ββ ββο»Ώ
N=βββ2014β2002β2030ββ ββο»Ώ
Wir wΓ€hlen
P1βο»Ώ
und prΓΌfen ob
Nkiββ€Wiβο»Ώ
also
(2β2β2β)β€(6β2β3β)ο»Ώ
.
Das trifft zu - deshalb:
-
setzen wir
P1βο»Ώ
auf
finished
-
updaten
Wο»Ώ
mit
W=(7β2β3β)=(6β2β3β)+(1β0β1β)ο»Ώ
-
und setzen mit
P3βο»Ώ
fort.
W=(7β2β3β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ0020β0010β0012ββ ββο»Ώ
N=βββ0014β0002β0030ββ ββο»Ώ
Wir wΓ€hlen
P3βο»Ώ
und prΓΌfen ob
Nkiββ€Wiβο»Ώ
also
(1β0β3β)β€(7β2β3β)ο»Ώ
.
Das trifft zu - deshalb:
-
setzen wir
P3βο»Ώ
auf
finished
-
updaten
Wο»Ώ
mit
W=(9β3β4β)=(7β2β3β)+(2β1β1β)ο»Ώ
-
und setzen mit
P4βο»Ώ
fort.
W=(9β3β4β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ0000β0000β0002ββ ββο»Ώ
N=βββ0004β0002β0000ββ ββο»Ώ
Wir wΓ€hlen
P3βο»Ώ
und prΓΌfen ob
Nkiββ€Wiβο»Ώ
also
(4β2β0β)β€(9β3β4β)ο»Ώ
.
Das trifft zu - deshalb:
-
setzen wir
P4βο»Ώ
auf
finished
-
updaten
Wο»Ώ
mit
W=(9β3β6β)=(9β3β4β)+(0β0β2β)ο»Ώ
W=(9β3β6β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ0000β0000β0000ββ ββο»Ώ
N=βββ0000β0000β0000ββ ββο»Ώ
Da es keine unfinished processes mehr gibt, und alle finished sind, wissen wir, dass dieser state safe war.
________
Beispiel 2
4ο»Ώ
Prozesse
3ο»Ώ
Ressourcen-Arten
R=(9β3β6β)ο»Ώ- Anzahl mΓΆglicher StΓΌcke aller Ressoucen
V=(1β1β2β)ο»Ώ- Anzahl der verfΓΌgbaren StΓΌcke aller Ressourcen
Claim Matrix
(Maximalbedarf)
C=βββ3634β2112β2342ββ ββο»Ώ
Allocation Matrix
(Aktuell beansprucht)
A=βββ1520β0110β0112ββ ββο»Ώ
Need Matrix
(Maximal beanspruchbar)
N=βββ2114β2002β2230ββ ββο»Ώ
Anforderung von
P1βο»Ώ
:
Q1β=(1β0β1β)ο»Ώ
Provisorisches Erlauben - Wir setzen unsere Variablen und starten den Algorithmus:
βi:Viβ:=ViββQkiβο»ΏWeniger insgesamt verfΓΌgbar
βi:Akiβ:=Akiβ+Qkiβο»ΏMehr vonPkβο»Ώbeansprucht
βi:Nkiβ:=NkiββQkiβο»ΏWeniger Bedarf vonPkβο»Ώ
Daher setzen wir den state zu:
V=(0β1β1β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ2520β0110β1112ββ ββο»Ώ
N=βββ1114β2002β1230ββ ββο»Ώ
Wir benutzen danach den Bankers algorithm um zu untersuchen ob unser state ein safe state ist:
W=(0β1β1β)ο»Ώ
C=βββ3634β2112β2342ββ ββο»Ώ
A=βββ2520β0110β1112ββ ββο»Ώ
N=βββ1114β2002β1230ββ ββο»Ώ
Wir wΓ€hlen
P1βο»Ώ
und prΓΌfen ob
Nkiββ€Wiβο»Ώ
also
(1β2β1β)β€(0β1β1β)ο»Ώ
.
Das trifft nicht zu - wir beenden den Algorithmus, und da nicht alle states finished sind, ist das ein unsafe state.
60