πŸ“Ž

Bankers Algorithm Beispiele

Beispiel 1

44ο»Ώ Prozesse

33ο»Ώ Ressourcen-Arten

R=(936) R=\left(\begin{array}{lll} 9 & 3 & 6 \end{array}\right) ο»Ώ- Anzahl mΓΆglicher StΓΌcke aller Ressoucen

V=(112) V=\left(\begin{array}{lll}1 & 1 & 2\end{array}\right) ο»Ώ- Anzahl der verfΓΌgbaren StΓΌcke aller Ressourcen

Claim Matrix (Maximalbedarf)

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

Allocation Matrix (Aktuell beansprucht)

A=(100511211002) A=\left(\begin{array}{lll}1 & 0 & 0 \\5 & 1 & 1 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

Need Matrix (Maximal beanspruchbar)

N=(222102103420) N=\left(\begin{array}{lll}2 & 2 & 2 \\1 & 0 & 2 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

In Matrizen stehen Zeilen fΓΌr Prozesse, Spalten fΓΌr Ressourcen

Anforderung von P2P_2ο»Ώ : Q2=(101) Q_{2}=\left(\begin{array}{lll}1 & 0 & 1\end{array}\right) ο»Ώ

Provisorisches Erlauben - Wir setzen unsere Variablen und starten den Algorithmus:

βˆ€i:Vi:=Viβˆ’Qki\forall i: V_i := V_i - Q_{ki}ο»ΏWeniger insgesamt verfΓΌgbar

βˆ€i:Aki:=Aki+Qki\forall i: A_{ki} := A_{ki} + Q_{ki}ο»ΏMehr vonPkP_kο»Ώbeansprucht

βˆ€i:Nki:=Nkiβˆ’Qki\forall i: N_{ki} := N_{ki}- Q_{ki}ο»ΏWeniger Bedarf vonPkP_kο»Ώ

Daher setzen wir den state zu:

V=(011) V=\left(\begin{array}{lll}0 & 1 & 1\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(100612211002) A=\left(\begin{array}{lll}1 & 0 & 0 \\ \textcolor{orange} 6 & \textcolor{orange} 1 & \textcolor{orange} 2 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

N=(222001103420) N=\left(\begin{array}{lll}2 & 2 & 2 \\ \textcolor{orange} 0 & \textcolor{orange} 0 & \textcolor{orange} 1 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

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)( P_2, P_1, P_3, P_4)ο»Ώ mit der alle Prozesse fertiggestellt werden kΓΆnnen.

Deshalb wΓ€hlen wir unsere unfinished processes nach dieser Reihenfolge in diesem Beispiel.


W:=(011) W:=\left(\begin{array}{lll}0 & 1 & 1\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(100612211002) A=\left(\begin{array}{lll}1 & 0 & 0 \\ \textcolor{orange} 6 & \textcolor{orange} 1 & \textcolor{orange} 2 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

N=(222001103420) N=\left(\begin{array}{lll}2 & 2 & 2 \\ \textcolor{orange} 0 & \textcolor{orange} 0 & \textcolor{orange} 1 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

Wir wΓ€hlen P2P_2ο»Ώ und prΓΌfen ob Nki≀WiN_{ki} \leq W_iο»Ώ also (001)≀(011) \left(\begin{array}{lll}0 & 0 & 1\end{array}\right) \leq \left(\begin{array}{lll}0 & 1 & 1\end{array}\right) ο»Ώ .

Das trifft zu - deshalb:

  1. setzen wir P2P_2ο»Ώ auf finished
  1. updaten WWο»Ώ mit W=(623)=(011)+(612) W=\left(\begin{array}{lll} 6 & 2 & 3 \end{array}\right) \textcolor{grey}{= \left(\begin{array}{lll} 0 & 1 & 1 \end{array}\right) + \left(\begin{array}{lll} 6 & 1 & 2 \end{array}\right)} ο»Ώ
  1. und setzen mit P1P_1ο»Ώ fort.


W=(623) W=\left(\begin{array}{lll} 6 & 2 & 3 \end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(100000211002) A= \left(\begin{array}{lll} \textcolor{orange} 1 & \textcolor{orange} 0 & \textcolor{orange} 0 \\0 & 0 & 0 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

N=(222000103420) N=\left(\begin{array}{lll} \textcolor{orange} 2 & \textcolor{orange} 2 & \textcolor{orange} 2 \\0 & 0 & 0 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

Wir wΓ€hlen P1P_1ο»Ώ und prΓΌfen ob Nki≀WiN_{ki} \leq W_iο»Ώ also (222)≀(623) \left(\begin{array}{lll}2 & 2 &2\end{array}\right) \leq \left(\begin{array}{lll}6 & 2 &3\end{array}\right) ο»Ώ .

Das trifft zu - deshalb:

  1. setzen wir P1P_1ο»Ώ auf finished
  1. updaten WWο»Ώ mit W=(723)=(623)+(101) W=\left( \begin{array}{lll}7 & 2 & 3\end{array}\right) \textcolor{grey}{= \left(\begin{array}{lll} 6 & 2 & 3 \end{array}\right) + \left(\begin{array}{lll} 1 & 0 & 1 \end{array}\right)} ο»Ώ
  1. und setzen mit P3P_3ο»Ώ fort.


W=(723) W=\left( \begin{array}{lll}7 & 2 & 3\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(000000211002) A=\left(\begin{array}{lll}0 & 0 & 0 \\0 & 0 & 0 \\ \textcolor{orange} 2 & \textcolor{orange} 1 & \textcolor{orange} 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

N=(000000103420) N=\left(\begin{array}{lll}0 & 0 & 0 \\0 & 0 & 0 \\ \textcolor{orange} 1 & \textcolor{orange} 0 & \textcolor{orange} 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

Wir wΓ€hlen P3P_3ο»Ώ und prΓΌfen ob Nki≀WiN_{ki} \leq W_iο»Ώ also (103)≀(723) \left(\begin{array}{lll}1 & 0 &3\end{array}\right) \leq \left(\begin{array}{lll}7 & 2 &3\end{array}\right) ο»Ώ .

Das trifft zu - deshalb:

  1. setzen wir P3P_3ο»Ώ auf finished
  1. updaten WWο»Ώ mit W=(934)=(723)+(211) W=\left( \begin{array}{lll}9 & 3 & 4\end{array}\right) \textcolor{grey}{= \left(\begin{array}{lll} 7 & 2 & 3 \end{array}\right) + \left(\begin{array}{lll} 2 & 1 & 1 \end{array}\right)} ο»Ώ
  1. und setzen mit P4P_4ο»Ώ fort.


W=(934) W=\left( \begin{array}{lll}9 & 3 & 4\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(000000000002) A=\left(\begin{array}{lll}0 & 0 & 0 \\0 & 0 & 0 \\ 0 & 0 & 0 \\ \textcolor{orange} 0 & \textcolor{orange} 0 & \textcolor{orange} 2\end{array}\right) ο»Ώ

N=(000000000420) N=\left(\begin{array}{lll}0 & 0 & 0 \\0 & 0 & 0 \\ 0 & 0 & 0 \\ \textcolor{orange} 4 & \textcolor{orange} 2 & \textcolor{orange} 0\end{array}\right) ο»Ώ

Wir wΓ€hlen P3P_3ο»Ώ und prΓΌfen ob Nki≀WiN_{ki} \leq W_iο»Ώ also (420)≀(934) \left(\begin{array}{lll} 4 & 2 &0\end{array}\right) \leq \left(\begin{array}{lll}9 & 3 &4\end{array}\right) ο»Ώ .

Das trifft zu - deshalb:

  1. setzen wir P4P_4ο»Ώ auf finished
  1. updaten WWο»Ώ mit W=(936)=(934)+(002) W=\left( \begin{array}{lll}9 & 3 & 6\end{array}\right) \textcolor{grey}{= \left(\begin{array}{lll} 9 & 3 & 4 \end{array}\right) + \left(\begin{array}{lll} 0 & 0 & 2 \end{array}\right)} ο»Ώ


W=(936) W=\left( \begin{array}{lll}9 & 3 & 6\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(000000000000) A=\left(\begin{array}{lll}0 & 0 & 0 \\0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0\end{array}\right) ο»Ώ

N=(000000000000) N=\left(\begin{array}{lll}0 & 0 & 0 \\0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{array}\right) ο»Ώ

Da es keine unfinished processes mehr gibt, und alle finished sind, wissen wir, dass dieser state safe war.

________

Beispiel 2

44ο»Ώ Prozesse

33ο»Ώ Ressourcen-Arten

R=(936) R=\left(\begin{array}{lll} 9 & 3 & 6 \end{array}\right) ο»Ώ- Anzahl mΓΆglicher StΓΌcke aller Ressoucen

V=(112) V=\left(\begin{array}{lll}1 & 1 & 2\end{array}\right) ο»Ώ- Anzahl der verfΓΌgbaren StΓΌcke aller Ressourcen

Claim Matrix (Maximalbedarf)

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

Allocation Matrix (Aktuell beansprucht)

A=(100511211002) A=\left(\begin{array}{lll}1 & 0 & 0 \\5 & 1 & 1 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

Need Matrix (Maximal beanspruchbar)

N=(222102103420) N=\left(\begin{array}{lll}2 & 2 & 2 \\1 & 0 & 2 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

Anforderung von P1P_1ο»Ώ : Q1=(101) Q_{1}=\left(\begin{array}{lll}1 & 0 & 1\end{array}\right) ο»Ώ

Provisorisches Erlauben - Wir setzen unsere Variablen und starten den Algorithmus:

βˆ€i:Vi:=Viβˆ’Qki\forall i: V_i := V_i - Q_{ki}ο»ΏWeniger insgesamt verfΓΌgbar

βˆ€i:Aki:=Aki+Qki\forall i: A_{ki} := A_{ki} + Q_{ki}ο»ΏMehr vonPkP_kο»Ώbeansprucht

βˆ€i:Nki:=Nkiβˆ’Qki\forall i: N_{ki} := N_{ki}- Q_{ki}ο»ΏWeniger Bedarf vonPkP_kο»Ώ

Daher setzen wir den state zu:

V=(011) V=\left(\begin{array}{lll}0 & 1 & 1\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(201511211002) A=\left(\begin{array}{lll} \textcolor{orange}2 & \textcolor{orange}0 & \textcolor{orange}1 \\5 & 1 & 1 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

N=(121102103420) N=\left(\begin{array}{lll} \textcolor{orange}1 & \textcolor{orange}2 & \textcolor{orange}1 \\1 & 0 & 2 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

Wir benutzen danach den Bankers algorithm um zu untersuchen ob unser state ein safe state ist:


W=(011) W=\left(\begin{array}{lll}0 & 1 & 1\end{array}\right) ο»Ώ

C=(322613314422) C=\left(\begin{array}{lll} 3 & 2 & 2 \\ 6 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 2 & 2 \end{array}\right) ο»Ώ

A=(201511211002) A=\left(\begin{array}{lll} \textcolor{orange}2 & \textcolor{orange}0 & \textcolor{orange}1 \\5 & 1 & 1 \\2 & 1 & 1 \\0 & 0 & 2\end{array}\right) ο»Ώ

N=(121102103420) N=\left(\begin{array}{lll} \textcolor{orange}1 & \textcolor{orange}2 & \textcolor{orange}1 \\1 & 0 & 2 \\1 & 0 & 3 \\4 & 2 & 0\end{array}\right) ο»Ώ

Wir wΓ€hlen P1P_1ο»Ώ und prΓΌfen ob Nki≀WiN_{ki} \leq W_iο»Ώ also (121)≀(011) \left(\begin{array}{lll}1 & 2 & 1\end{array}\right) \leq \left(\begin{array}{lll}0 & 1 & 1\end{array}\right) ο»Ώ .

Das trifft nicht zu - wir beenden den Algorithmus, und da nicht alle states finished sind, ist das ein unsafe state.

60