© H.-U. Heiß, Uni Paderborn 8 Betriebsmittelverwaltung 8.1 Strukturen und Varianten Betriebsmittel (resources) treten in verschiedensten Formen auf und können auf verschiedene Art und Weise verwaltet werden. Betriebsmittelform • • Einzelexemplar-Betriebsmittel werden als ganze belegt (z.B. Drucker, kritischer Abschnitt) Mehrexemplar-Betriebsmittel (teilbare BM) werden in Teilen belegt (z.B. Speicher) Beschaffungsform • • Selbstanforderung Benutzer (Prozess) fordert für sich selbst. Fremdversorgung Eine fremde Instanz veranlasst eine BM-Zuweisung, z.B. Hauptspeicher für Programm und Daten eines zu aktivierenden Prozesses 8-1 © H.-U. Heiß, Uni Paderborn Strukturen und Varianten Angebotsformen • Real / virtuell • Begrenzt / unbegrenzt • Permanent / intermittierend (Nutzung) (Kapazität) Realisierungsform der BM-Verwaltung • als Prozedur im Kern / außerhalb des Kerns • als Prozess 8-2 © H.-U. Heiß, Uni Paderborn Unkoordinierte Nutzung Bei unkoordinierter Nutzung eines Betriebsmittels können unerwünschte Effekte auftreten Prozeß x S E Drucker E Treiber E „Zeile drucken“ Prozeß y “ en k ruc eil xxxxxxx yyyyyyy yyyyyyy xxxxxxx yyyyyyy S E ed „Z S S E S 8-3 Papier Chaos ! © H.-U. Heiß, Uni Paderborn Koordination durch Verwaltungskomponente Durch den Einsatz eines BM-Verwalters kann z.B. eine exklusive Nutzung erreicht werden Prozeß x Belegen Treiber E „Zeile drucken“ S E Freigeben Prozeß y Belegen “ S E ed il Ze Papier xxxxxxx xxxxxxx en k ruc Drucker E „ yyyyyyy yyyyyyy S S S E BM-Verwalter Freigeben 8-4 © H.-U. Heiß, Uni Paderborn BM-Verwaltung als Koordinationsproblem Die Nutzung von Einexemplar-Betriebsmitteln kann als kritischer Abschnitt angesehen werden Die BM-Verwaltung ist daher ein Koordinationsproblem im erweiterten Sinn Die Verwaltungsoperationen Belegen (allocate) und Freigeben (release) haben daher die gleiche Struktur wie die Operationen zum Sperren eines kritischen Abschnitts lock und unlock. allocate(R) release(R) R = free ? yes block R := occupied R := free process waiting ? deblock process 8-5 no © H.-U. Heiß, Uni Paderborn Schnappschuss einer Belegungssituation Prozesse „wartet“ „hat belegt“ belegt frei Einzelne Betriebsmittel 8-6 © H.-U. Heiß, Uni Paderborn Daten im Betriebsmittelverwalter Minimale Daten • Belegungszustand (frei, belegt) • Wartende Prozesse ( die beim Belegungsversuch blockiert wurden) Ergänzende Daten (optional) • Belegender Prozess (aktueller Besitzer) • Anzahl Belegungen • Mittlere Belegungsdauer • Nutzungsgrad • Beginn der aktuellen Belegung Diese Daten benötigt man u.U. für bestimmte Strategien, z.B. auch für BM-Entzug 8-7 © H.-U. Heiß, Uni Paderborn Beispielimplementierung kernel module single_unit_resource; export ALLOCATE_R, RELEASE_R; import BLOCK, DEBLOCK; var single_unit_R = record STATE: (free,occupied) = free; WP: queue of process = empty end; procedure ALLOCATE_R(R: single_unit_R); begin while R.STATE = occupied do BLOCK(R.WP); R.STATE := occupied end; procedure RELEASE_R(R: single_unit_R); begin R.STATE := free; if R.WP /= empty then DEBLOCK(R.WP); end; end single_unit_resource. 8-8 © H.-U. Heiß, Uni Paderborn Mehrexemplar-Betriebsmittel a) Menge identischer Exemplare (z.B. Laufwerke für Speichermedien) b) Speicher 0 1 2 3 c) v-1 Prozessoren (Parallelrechner) (0,0) (0,v-1) (v-1,0) (v-1,v-1) 8-9 © H.-U. Heiß, Uni Paderborn Schnittstelle In der Regel werden solche teilbaren Betriebsmittel zusammenhängend belegt. Dann ist durch Anfangsadresse und Anzahl der belegte Bereich vollständig bestimmt ALLOCATE_R(START, NUM) • START Anfangsindex des belegten Intervalls (Ausgangsparameter) • NUM Anzahl der geforderten Einheiten (Eingangsparameter) RELEASE_R(START, NUM) Freigabe eines Intervalls, das bei START beginnt und die Länge NUM besitzt 8-10 © H.-U. Heiß, Uni Paderborn Belegungsdarstellung Der Belegungszustand des BM wird in einer Datenstruktur festgehalten. Einfachster Fall: Bitliste 0 1 2 3 v-1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 belegt frei Zum Zugriff auf den Belegungszustand gibt es die Operationen FREE(NUM) Prüft, ob eine Anforderung nach einem Stück der Länge NUM erfüllbar SET_OCCUPIED(START, NUM) SET_FREE(START, NUM) Setzt die entsprechenden Bits Setzt die entsprechenden Bits zurück 8-11 © H.-U. Heiß, Uni Paderborn Struktur der Verwaltung eines teilbaren BM RELEASE_R(START,NUM) ALLOCATE_R(START,NUM) SET_FREE(START,NUM) FREE(NUM) Y WP = empty BLOCK(WP) DEBLOCK(WP) SET_OCCUPIED(START,NUM) R R 8-12 Y © H.-U. Heiß, Uni Paderborn Beispielimplementierung kernel module Multi_unit_resource; export ALLOCATE_R, RELEASE_R; import BLOCK; DEBLOCK, FREE, SET_OCCUPIED, SET_FREE; var multi_unit_R = record STATE: array[0..v-1] of (free,occupied) = all free; WP: queue of process = empty end; procedure ALLOCATE_R(R: multi_unit_R; START: address; NUM: int); begin while ¬ FREE(R,NUM) do BLOCK(R.WP); SET_OCCUPIED(R,START,NUM) end; procedure RELEASE_R(R: multi_unit_R; START: address; NUM: int); begin SET_FREE(R,START,NUM); while R.WP /= empty then DEBLOCK(R.WP); end; end Multi_unit_resource. 8-13 © H.-U. Heiß, Uni Paderborn Erweiterung • Wenn viele Prozesse warten, ist es zweckmäßiger, solche Prozesse zu deblockieren, deren Anforderungen tatsächlich erfüllt werden können. • Dazu müssen die Anforderungen im BM-Verwalter abgelegt werden WR (= waiting requests) • Wenn man die Prozesse gemäß ihrer Anforderung gezielt aussucht, kann man die Belegung auch gleich beim Freigeben durchführen. • Da jetzt die eigentliche Belegung nicht vom anfordernden Prozess, sondern vom freigebenden vorgenommen wird, spricht man von Fremdbelegung (im Gegensatz zur bisherigen Eigenbelegung) • In der Prozedur „ALLOCATE“ darf dann die Prüfung auf freie Exemplare nicht wiederholt werden 8-14 © H.-U. Heiß, Uni Paderborn Verwaltung von Mehrexemplar-BM (Eigen-/Fremdbelegung) ALLOCATE_R(START,NUM) RELEASE_R(START,NUM) Anforderung <PID,START,NUM> nach WR übernehmen SET_FREE(START,NUM) N Gibt es erfüllbare Anforderung <P,S,N> in WR? Gibt es erfüllbare N Anforderung <P,S,N> in WR ? SET_OCCUPIED(S,N) SET_OCCUPIED(S,N) Anforderung aus WR entfernen Anforderung aus WR entfernen BLOCK(R.WP) DEBLOCK_S(R.WP,P) R R Die verwendete Deblockier-Operation hat nun ein Suffix _S (select) erhalten, da nun nicht der erste Prozess in der Warteschlange, sondern ein bestimmter deblockiert wird 8-15 © H.-U. Heiß, Uni Paderborn Beispielimplementierung kernel module multi_unit_resource; export ALLOCATE_R, RELEASE_R; import BLOCK; DEBLOCK_S, INSERT, REMOVE, FIRST, ELEM, FREE, SET_OCCUPIED, SET_FREE; var multi_unit_r = record STATE: array[0..v-1] of (free,occupied) = all free; WP: list of process = empty; WR: list of record PROC: process; START: address; NUM: int end = empty end; procedure ALLOCATE_R(R: multi_unit_r; START: address; NUM: int); var P:process; S:address; N:int; begin INSERT(R.WR,<P_RUN,START,NUM>); if ¬ FREE(R,FIRST(R.WR).NUM) then BLOCK(R.WP) else begin REMOVE(R.WR,FIRST(R.WR),<P,S,N>); SET_OCCUPIED(S,N) end end; procedure RELEASE_R(R: multi_unit_r; START: address; NUM: int); var P:process; A:address; L:int; begin SET_FREE(R,START,NUM); while ∃ ELEM ∈ R.WR: FREE(ELEM(R.WR).NUM) do begin REMOVE(R.WR,ELEM(R.WR),<P,S,N>); SET_OCCUPIED(S,N); DEBLOCK_S(R.WP,P) end end; end multi_unit_resource. 8-16 © H.-U. Heiß, Uni Paderborn Betriebsmittelverwaltung außerhalb des Kerns Werden die Verwaltungsoperationen zu zeitaufwendig, so empfiehlt sich eine Realisierung außerhalb des Kerns, entweder als Prozedur oder als Prozess. Beispiel: BM-Verwalter als Sekretär BM_VERWALTER E_S(KE,<KR,START,NUM>) Anforderung <KR,START,NUM> nach WR übernehmen N Gibt es erfüllbare Anforderung <K,S,N> in WR ? SET_FREE(START,NUM) S_A(KR) Gibt es erfüllbare N Anforderung <K,S, N> in WR ? SET_OCCUPIED(S,N) SET_OCCUPIED(S,N) Anforderung aus WR entfernen S_A(K) Anforderung aus WR entfernen S_A(K) KE: Eingangskanal, KR: Rückkanal 8-17 © H.-U. Heiß, Uni Paderborn 8.2 Kandidatenauswahlstrategien Bei der Fremdbelegung wurde bereits in der Folge der wartenden Anforderungen eine erfüllbare ausgewählt, d.h. vom FCFS-Prinzip abgewichen. Grundsätzlich können hier wieder verschiedene Strategien eingesetzt werden, die • • eine gute Auslastung des Betriebsmittels oder eine faire Behandlung der Interessenten zum Ziel haben. Sei nf(t) die Anzahl der zum Zeitpunkt t freien BM-Einheiten n(i) die Anzahl der von Prozess i geforderten Einheiten W(t) bezeichne die Menge der wartenden Anforderungen/Prozesse. W(t) ist als Warteschlange aufzufassen, bei der Neuankömmlinge „hinten“ eingefügt werden. 8-18 © H.-U. Heiß, Uni Paderborn Auswahlstrategien • FIFO (First-In-First-Out) bzw. FCFS (First-Come-First-Served) Es wird lediglich die erste Anforderung i in der Warteschlange betrachtet. Gilt n(i) nf(t) , so werden n(i) Einheiten belegt, andernfalls es geschieht nichts. Nachteil: Betriebsmittelauslastung kann schlecht sein, wenn erste Anforderung groß. Nachfolgende kleinere - und erfüllbare - Anforderungen können nicht berücksichtigt werden. • First-Fit-Request Die Warteschlange wird von vorne beginnend durchsucht, bis eine Anforderung j gefunden wird, die erfüllt werden kann (n(j) nf(t) ). • Best-Fit-Request Die Warteschlange wird vollständig durchsucht, und es wird diejenige Anforderung j gewählt, für die das nachfolgende Minimum angenommen wird: min {n f (t ) − n( j )} j ∈W ( t )∧ n ( j )≤ n f ( t ) Bei Best-Fit-Request wird diejenige Anforderung gewählt, die die freie Restkapazität minimiert. Nachteil bei First-Fit- und Best-Fit-Request: Für Programme mit großen Anforderungen besteht die Gefahr des „Verhungern“ (starvation) 8-19 © H.-U. Heiß, Uni Paderborn Auswahlstrategien Iterative Anwendung • Nach Freigabe einer größeren Anzahl von Einheiten können u.U. mehrere Anforderungen auf einmal erfüllt werden. • Die obigen Strategien können daher iterativ angewendet werden, bis keine Belegung mehr möglich ist. Fenster Um Aufwand zu reduzieren, kann man sich auf ein Fenster der Größe L beschränken, d.h. lediglich die ersten L Positionen der Warteschlange werden betrachtet Fenster Belegung Anforderung A5 A2 A6 A3 Warteschlange 8-20 © H.-U. Heiß, Uni Paderborn Lösung des Problems des Verhungerns Verwendet man eine dynamische Fenstergröße, so kann auch das Verhungern einer großen Anforderung (First-Fit-Request, Best-Fit-Request) verhindert werden. Sei Lmax die maximale Fenstergröße (Initialwert) Dann wird bei jeder erfolgreichen Belegung die Fenstergröße L folgendermaßen modifiziert: L −1, falls L > 1 und die Anforderung am Kopf der WS nicht berücksichtigt wurde L: = Lmax , sonst Dadurch wird, nachdem die vorderste Anforderung höchstens Lmax -1 mal übergangen wurde, die Fenstergröße = 1, d.h. die vorderste Anforderung muss berücksichtigt werden. Fenstergröße L=1 Belegung Anforderung A8 A5 A2 A6 A3 Warteschlange Für L gegen 1 konvergieren Best-Fit-Request und First-Fit-Request gegen FCFS 8-21 © H.-U. Heiß, Uni Paderborn 8.3 Betriebsmittel mit Verdrängung • Um dringlichere Aufgaben bevorzugt zu bearbeiten, hatten wir schon beim Prozessor (aktives Betriebsmittel) Prioritäten und die Möglichkeit der Verdrängung (preemption) vorgesehen. • Ähnlich lässt sich auch bei anderen (passiven) Betriebsmitteln argumentieren. • Wenn nicht genügend Hauptspeicher zur Verfügung steht und ein dringlicher Prozess deswegen nicht geladen werden kann, so könnte man weniger dringlichen Prozessen den Hauptspeicher entziehen und dadurch Platz schaffen. • Da ein solches passives Betriebsmittel „Zustandsträger“ ist, kann beim Verdrängen oder Entzug Information verloren gehen. • Es gibt daher zwei Möglichkeiten: • • Rücksetzen des Prozesses und Wiederholen des letzten Stücks der Bearbeitung (i.d.R. schwierig wegen Seiteneffekten) • Retten der Information auf ein Ersatzbetriebsmittel (z.B. vom Hauptspeicher auf Platte, von der Platte auf Band) Hier wiederholt sich in ähnlicher Weise, was wir schon vom Verdrängen vom Prozessor kennen 8-22 © H.-U. Heiß, Uni Paderborn Betriebsmittel mit Verdrängung Bisher (ohne Verdrängung) Belegen Freigeben t Laufender Besitzer Anforderer Warten Belegen Zuordnen Freigeben Jetzt (mit Verdrängung) Belegen Laufender Besitzer Wiederzuordnen Freigeben Verzögern Anforderer t Belegen Entziehen und Zuordnen Freigeben 8-23 © H.-U. Heiß, Uni Paderborn Art der Aufgabe BM_Nutzer BM_Nutzer BELEGEN_BM(BM) BELEGEN_BM(BM) AUFGEBEN_BM(BM) AUFGEBEN_BM(BM) AUFGEBEN_BM(BM) FREIGEBEN_BM(BM) FREIGEBEN_BM(BM) (a) (b) freiwillig erzwungen 8-24 © H.-U. Heiß, Uni Paderborn Ablauf der Verdrängung Wenn der Zustand gerettet werden soll, ist ein Ersatzbetriebsmittel in hinreichender Menge zur Verfügung zu stellen. Prozesse Ein Betriebsmittel BM Ersatzbetriebsmittel Bei der Verdrängung muss der Inhalt des BM in das Ersatz-BM ausgeräumt werden (swap out) und bei der erneuten Zuweisung wieder eingeräumt werden (swap-in) Ersatz-BM Ausräumen Belegen Einräumen Freigeben BM 8-25 © H.-U. Heiß, Uni Paderborn Ablauf der Verdrängung • Als Kriterien für die Verdrängung kommen ähnliche Maße wie beim Prozessor-Scheduling in Frage: Statische Prioritäten, Größe oder Dauer der Belegung, ... • Daraus lässt sich in eine u.U. dynamische spezifische BM-Priorität berechnen • Bei einem Belegungsversuch kann daher eine Verdrängungsprüfung stattfinden. • Ist die spezifische BM-Priorität des anfordernden Prozesses höher als die eines BMbesitzenden, so kann eine Verdrängung stattfinden, sofern dadurch genügend Einheiten frei werden, um die Anforderung zu erfüllen. • Sind mehrere Prozesse verdrängbar, d.h. ihre BM-Priorität ist geringer als die des Anforderers, so können auch mehrere Prozesse verdrängt werden. • Um dies festzustellen, benötigen wir in der BM-Verwaltung Informationen über „Besitzer“ des Betriebsmittel. Neben den anstehenden Anforderungen (WR waiting requests) benötigen wir die erfüllten Belegungen (SR satisfied requests) 8-26 © H.-U. Heiß, Uni Paderborn Ablauf der Verdrängung • Die Menge SR kann nach BM-Prioritäten geordnet sein. Betriebsmittelspezifische Priorität • 2 2 5 8 9 Verdrängte Prozesse werden sinnvollerweise wieder in die Menge der wartenden Prozesse gemäß ihrer BM-Priorität eingeordnet In der Wartemenge WR mischen sich dann Erstanforderungen mit Wiederholungsanforderungen Betriebsmittelspezifische Priorität 10 11 14 17 22 23 W E E W E W 8-27 © H.-U. Heiß, Uni Paderborn Zustände der Anforderungen Eine Anforderung kann also erfüllt sein oder nicht erfüllt, etwa beim ersten Belegungsversuch oder nach einer Verdrängung. Kann der Prozess vorübergehend das Betriebsmittel nicht nutzen, so kann sein Belegungswunsch auch zurückgestellt (deferred) werden, d.h. er nimmt am Wettbewerb vorübergehend nicht teil. Zurückgestellt Anforderung wiederstellen Ausräumen Anforderung aufgeben Fordernd Anforderung stellen ErsatzBM belegen und initialisieren Anforderung zurückstellen Ausräumen Erfüllt Anforderung erfüllen Einräumen 8-28 Anforderung löschen ErsatzBM freigeben © H.-U. Heiß, Uni Paderborn Datenstrukturen im Betriebsmittelverwalter var R: multi_unit_R = record STATE: array[1..vmax] of (free,occupied) = all free; PH: list of process = empty; WP: list of process = empty; WR,SR,DR: list of record PROC: process; CR: channel; START: address; LENGTH: int; START_BR: address; LENGTH_BR: int; end = empty end; 8-29 © H.-U. Heiß, Uni Paderborn Mehrfach-Verdrängung Ohne den Besitz des Betriebsmittels kann der Prozess nicht weiterarbeiten, d.h. nach der Verdrängung ist der Prozess wieder im Zustand „blockiert“ bzw. „wartend“ Da er u.U. von mehreren BM verdrängt und damit mehrfach blockiert werden kann, muss er in mehreren Wartezuständen gleichzeitig sein. DEBLOCKIEREN BLOCKIEREN Mehrfach wartend BLOCKIEREN BLOCKIEREN Bereit Rechnend 8-30 © H.-U. Heiß, Uni Paderborn Hauptspeicher als Betriebsmittel • Hauptspeicher ist ein Betriebsmittel, dessen Besitz Voraussetzung für eine Zuordnung zum Prozessor ist. • Der Prozess erhält ihn beim Aktivieren durch Fremdzuweisung. • Eine Verdrängung aus dem Speicher ist sinnvoll, wenn der Prozess so lange auf etwas warten muss, dass sich der Aufwand für das Aus- und Einräumen lohnt. • Erst nach Eintreten des Ereignisses nimmt er wieder am Wettbewerb teil. • Es ergeben sich bezüglich des Speichers daher die gleichen Zustände wie bezüglich des Prozessors. • Dies führt zu einem hierarchischen Zustandsdiagramm 8-31 © H.-U. Heiß, Uni Paderborn Hierarchisches Zustandsdiagramm DEBLOCKIEREN_S BLOCKIEREN_S Lang wartend AUFGEBEN_S DEBLOCKIEREN_P BLOCKIEREN_P Kurz wartend AUFGEBEN_P Speicher fordernd Nicht aktiv AKTIVIEREN Bereit ZUORDNEN_S Rechnend ZUORDNEN_P Speicher besitzend 8-32 Nicht aktiv DEAKTIVIEREN © H.-U. Heiß, Uni Paderborn 8.4 Verklemmung 8.4.1 Charakterisierung Beispiel Koordination P1 Beispiel Kommunikation P2 P1 P2 WAIT(SO 1) WAIT(SO 2 ) RECEIVE_S(CO 1) RECEIVE_S(CO ) 2 SIGNAL(SO2 ) SIGNAL(SO1 ) SEND_A(CO 2 ) SEND_A(CO 1 ) Beispiel Kooperation P1 P2 LOCK(LO 1) LOCK(LO2 ) LOCK(LO 2 ) LOCK(LO 1) 8-33 © H.-U. Heiß, Uni Paderborn Verklemmung (deadlock) Beispiel Verwaltung von Einexemplarbetriebsmitteln P1 P2 ALLOCATE(R1) ALLOCATE(R2) ALLOCATE(R2) ALLOCATE(R1) Beispiel Verwaltung von Mehrexemplarbetriebsmitteln. Es seien 10 Exemplare vorhanden P1 P2 ALLOCATE_R(5) ALLOCATE_R(5) ALLOCATE_R(1) ALLOCATE_R(1) 8-34 © H.-U. Heiß, Uni Paderborn Verklemmung Beispiel (mehrere Prozesse beteiligt) E E E E E S S S S S 8-35 © H.-U. Heiß, Uni Paderborn Wartegraph Ein gerichteter Graph mit den Prozessen als Knoten und Wartebeziehungen als Pfeile heißt Wartegraph (wait-for graph) Eine Verklemmung ist charakterisiert durch einen Zyklus im Wartegraphen zwischen zwei Prozessen zwischen sechs Prozessen P1 P2 wartet auf P1 P2 P6 P3 wartet auf P5 8-36 P4 © H.-U. Heiß, Uni Paderborn Verklemmung Eine Verklemmung (deadlock) kann in vielen Bereichen auftreten. Im Zusammenhang mit Betriebsmitteln sind die folgenden drei Bedingungen notwendig für das Auftreten einer Verklemmung 1. 2. 3. Betriebsmittel werden exklusiv genutzt Prozesse besitzen schon Betriebsmittel, während sie auf andere warten. Verdrängung findet nicht statt Unter diesen Bedingungen kann dann die folgende Bedingung eintreten die - zusammen mit den anderen drei Bedingungen - hinreichend ist für die Existenz einer Verklemmung: 4. Es gibt eine zyklische Wartesituation Das Betriebssystem muss Gegenmaßnahmen bereitstellen • Vorbeugung (prevention) • Vermeidung (avoidance) • Entdeckung (detection) • Auflösung (resolution, recovery) 8-37 © H.-U. Heiß, Uni Paderborn 8.4.2 Verklemmungsvorbeugung (deadlock prevention) Vorbeugung in diesem Zusammenhang bedeutet ein präventives Vorgehen, die BM-Vergabe prinzipiell so restriktiv zu gestalten, dass Verklemmungen überhaupt nicht auftreten können • Summenbelegung (preclaiming) Sämtliche jemals benötigten BM werden einmalig zu Beginn angefordert wartet auf Pi kann es nicht geben, da vorher nichts belegt Anmerkung: In dynamischen Systemen ist der Gesamtbedarf eines Prozesses schwierig abzuschätzen Verfahren ist unökonomisch, da BM viel zu lange belegt. 8-38 © H.-U. Heiß, Uni Paderborn Verklemmungsvorbeugung • Totalfreigabe bei jeder Belegung Belegen(BM1, BM2) Freigeben(BM1, BM2) Belegen(BM3) evtl zwangsweise Freigeben(BM3) Belegen(BM1, BM2) Auch hier wird eine Anforderung aus einem „besitzlosen“ Zustand vorgenommen und dadurch eine zyklische Wartesituation vermieden 8-39 © H.-U. Heiß, Uni Paderborn Verklemmungsvorbeugung • Belegung gemäß vorgegebener Ordnung Die Betriebsmittel seien geordnet (BM1, BM2, BM3,..) Betriebsmittel dürfen nur gemäß dieser Ordnung angefordert werden P1 Belegen(BM1) Belegen(BM3) Belegen(BM4) P2 Belegen(BM2) Belegen(BM3) Belegen(BM5) Auch dadurch werden Zyklen grundsätzlich vermieden 8-40 © H.-U. Heiß, Uni Paderborn 8.4.3 Beschreibung der BM-Situation P Menge der Prozesse, P = n BM Menge der BM-Typen, BM = n Vorhandene Betriebsmittel r v: = (v1 ,v2 ,...,vn ) Belegungen Anforderungen b11 ... b1n B: = : : bm1 ... bmn a11 ... a1n A: = : : am1 ... amn Gesamtanforderungen (Maximalanforderungen) g11 ... g1n G: = : : g ... g m1 mn r Wir nennen das Quintupel ( P, BM, v, B, A) eine Betriebsmittelsituation. Durch sie ist ein aktueller Anforderungs- und Belegungszustand vollständig beschrieben. 8-41 © H.-U. Heiß, Uni Paderborn Bedingungen 1. ∀j ∈{1,...,n}: m ∑ bij ≤ v j i=1 Es kann nicht mehr belegt sein, als vorhanden ist 2. ∀i ∈{1,...,m} ∀j ∈{1,...,n}: aij + bij ≤ v j gij ≤ v j Es kann nicht mehr angefordert werden, als verfügbar ist. 3. Ein Prozess, der eine Anforderung gestellt hat, wird bis zur Belegung blockiert. 4. Anforderungen können nur von nichtblockierten Prozessen gestellt werden (Konsequenz aus 3) 8-42 © H.-U. Heiß, Uni Paderborn Zweckmäßige Hilfsgrößen • Freie Betriebsmittel r f : = ( f1 , f2 ,..., fn ) mit m f j : = v j − ∑ bij „Freies = Vorhandenes - Belegtes“ i=1 • Restanforderungen r11 ... r1n R: = : : rm1 ... rmn mit rij : = gij − bij „Restanforderung = Gesamtanforderung - Belegtes“ 8-43 © H.-U. Heiß, Uni Paderborn Schreibweisen • • Statt Matrix manchmal Zeilenvektoren r ai : = ( a11 ,a12 ,...,a1n ) Anforderung von Prozess i r bi : = (b11 ,b12 ,...,b1n ) Belegung von Prozess i r gi : = ( g11 , g12 ,..., g1n ) Gesamtanforderung von Prozess i r ri : = (r11 ,r12 ,...,r1n ) Restanforderung von Prozess i Vergleichsoperatoren r r x ≤ y ⇔ ∀k: xk ≤ yk r r x ≤/ y ⇔ ∃k: xk > yk 8-44 © H.-U. Heiß, Uni Paderborn Definitionen • Ein Prozess Pi heißt blockiert, g.d.w. r r r m r ai ≤/ v − ∑ bk = f , k=1 d.h. wenn seine aktuelle Anforderung (im Moment) nicht erfüllbar ist. • r Eine Betriebsmittelsituation S = ( P, BM, v, B, A) heißt verklemmt, g.d.w. ∃I ⊆ {1,2,...,m}, I ≥ 2: r r r ∀k ∈I: ak ≤/ v − ∑ bk k∈I d.h. es gibt eine Teilmenge von Prozessen, deren Anforderungen nicht in allen Komponenten erfüllbar sind durch den Vorrat, der nicht von Prozessen dieser Teilmenge belegt ist. Man nennt auch die Prozessmenge I verklemmt. Beispiel: r r r v = ( 4,4) b1 = (2,3) b2 = (1,1) I = {1,2}, n = 2 r r v − ∑ bk = ( 4,4) − (2,3) − (1,1) = (1,0) k∈I r a1 = (0,1) ≤/ (1,0) r a1 = (0,1) r a2 = (2,0) ≤/ (1,0) Nach der obigen Definition ist die Prozessmenge I verklemmt. 8-45 r a2 = (2,0) © H.-U. Heiß, Uni Paderborn Betriebsmittelgraph Betriebsmittelgraphen bieten eine alternative Möglichkeit, Anforderungs- und Belegungssituationen formal darzustellen. Sei P die Menge der Prozesse, BM die Menge der Betriebsmitteltypen. Ein gerichteter Graph (V, E) mit V = P ∪ BM und der folgenden Pfeilsemantik heißt Betriebsmittelgraph: ( p,b) ∈E ⇔ Prozess p fordert eine Einheit von BM-Typ b P3 (b, p) ∈E ⇔ Prozess p besitzt eine Einheit von BM-Typ b B2 Der BM-Graph ist bezüglich der Knotenmengen P (Kreise) und BM (Rechtecke) bipartit, d.h. es gibt nur Kanten von P nach B oder umgekehrt P1 P2 Die Anzahl der insgesamt verfügbaren Einheiten eines Betriebsmitteltyps ist eine Art Knotengewicht und bestimmt den maximalen Ausgangsgrad des BM-Knotens. (Sie wird durch eine entsprechende Menge von Punkten innerhalb der Rechtecke graphisch dargestellt) 8-46 B1 B2 © H.-U. Heiß, Uni Paderborn Betriebsmittelgraph: Eigenschaften und Operationen • Ein BM-Graph spiegelt einen bestimmten Systemzustand wider, d.h. er repräsentiert eine Betriebsmittelsituation S. • Wie auch im Wartegraphen weist ein Zyklus auf eine potentielle Verklemmungssituation hin. • Allerdings ist ein Zyklus im BM-Graphen nur eine notwendige, aber keine hinreichende Bedingung für die Existenz einer Verklemmung (siehe Beispiel). • Jede Operation (Anfordern, Belegen, Freigeben) bedeutet eine Graphtransformation (Hinzufügen bzw. Entfernen von Kanten) • Ein Prozess kann nur dann eine Operation durchführen, wenn er nicht blockiert ist. • Sind die Gesamtanforderungen eines Prozesses erfüllt, so kann er beendet werden. • Die Beendigung eines Prozesses bedeutet die Freigabe aller belegter Betriebsmittel. 8-47 © H.-U. Heiß, Uni Paderborn Betriebsmittelgraph: Reduktionen Ein Prozess p, der weder isoliert noch blockiert ist, reduziert den BM-Graphen durch Entfernen aller seiner Belegungskanten Ein BM-Graph heißt reduzierbar, wenn es einen Prozess gibt, der ihn reduzieren kann. Der BM-Graph heißt vollständig reduzierbar, wenn es eine Folge von Reduktionen gibt, so dass am Ende alle Kanten entfernt sind. Verklemmungstheorem für BM-Graphen: Eine Betriebsmittelsituation S ist verklemmt genau dann, wenn der dazugehörige BM-Graph nicht vollständig reduzierbar ist. B1 Beispiel für eine Reduktion: P3 B2 Ausgangssituation a) 8-48 P1 P2 B2 © H.-U. Heiß, Uni Paderborn Beispiel (Fortsetzung) B1 B1 P3 B2 P1 P3 B2 B2 P2 P1 P2 b) c) B1 B1 P3 B2 B2 P1 P3 B2 P1 B2 P2 P2 d) e) 8-49 B2 © H.-U. Heiß, Uni Paderborn 8.4.4 Verklemmungsvermeidung (deadlock avoidance) • Die Verklemmungsdefinition betrifft eine aktuelle Belegungs- und Anforderungssituation. • Um eine solche Verklemmung vermeiden zu können, muss man die Restanforderungen der Prozesse kennen. • Im ungünstigsten Fall werden alle diese Restforderungen augenblicklich gestellt. • Könnten diese trotzdem erfüllt werden, so ist die Situation sicher. • Andernfalls heißt die Situation unsicher • Eine unsichere Betriebsmittelsituation ist also dadurch gekennzeichnet, dass es eine Teilmenge von Prozessen gibt, deren Restanforderungen nicht alle erfüllbar sind. Aktuelle Anforderungen können zwar noch erfüllt werden, aber wenn die Reihenfolge der Anforderungen und Freigaben ungünstig ist, kann es zur Verklemmung kommen. 8-50 © H.-U. Heiß, Uni Paderborn Belegungstrajektorie (mit Verklemmung) P1 F BMy sicher F B BMx sicher unsicher sicher B sicher sicher B B BMy 8-51 sicher BMx F F P2 © H.-U. Heiß, Uni Paderborn Belegungstrajektorie (ohne Verklemmung) P1 F BMy sicher F B BMx sicher sicher sicher unsicher sicher sicher sicher B sicher B F BMx B BMy 8-52 F P2 © H.-U. Heiß, Uni Paderborn Verklemmungsvermeidung Ein Vermeidungsverfahren steuert die Betriebsmittelvergabe so, dass keine unsichere Situation eintritt, d.h. Anforderungen werden nur gewährt, wenn sie wiederum in eine sichere Situation führen • r Eine Betriebsmittelsituation S = ( P, BM, v, B, A) heißt sicher, g.d.w. ∃ Permutation Pk1 , Pk2 ,.., Pkm mit ∀r ∈{1,2,...,m}: r r−1 r r rkr ≤ f + ∑ bks s=1 bzw. ∀r ∈{1,2,...,m}: r r m r rkr ≤ v − ∑ bks s=r d.h. es gibt eine Beendigungsreihenfolge der Prozesse derart, dass die verbleibenden Restanforderungen der noch nicht beendeten Prozesse durch Freigaben bereits beendeter Prozesse erfüllt werden können. 8-53 © H.-U. Heiß, Uni Paderborn Beispiel für Beendigungsreihenfolge 7 1 3 8 4 2 6 5 wartet auf 8-54 © H.-U. Heiß, Uni Paderborn Verklemmungsvermeidung Bei jeder Anforderung wird geprüft, ob ihre Erfüllung in einen unsicheren Zustand führt. Falls ja, wird sie - obwohl sie erfüllbar wäre - zurückgestellt. Zum Prüfen, ob eine aktuellen BM-Situation sicher ist oder nicht, dient der nachfolgende Algorithmus (Banker-Algorithmus) procedure deadlock_avoidance(P: set of processes, v: vector, r:matrix, b:matrix, var answer: state, DP: set of processes) var f: vector; begin answer := undefined; DP := P; m f: = v − ∑ bi ; i=1 while answer = undefined do if ∃Pi ∈ DP:ri ≤ f then begin DP: = DP − {Pi }; f: = f + bi ; if DP = ∅ then answer:= safe; end else answer := unsafe; end; 8-55 © H.-U. Heiß, Uni Paderborn Aufwand des Banker-Algorithmus Auswahl eines Prozesses (Schleifendurchlauf): O(m n) maximal m Prozesse (m Schleifendurchläufe): Gesamtkomplexität O(m2 n) Beispiel Gegeben sei ein System mit m=4 Prozessen (i = 1,..,4) und n=2 Betriebsmitteltypen (j = 1,2) . Die aktuelle Situation sei durch die folgenden Größen beschrieben: Belegungen: 0 1 B= 3 5 4 0 0 4 Gesamtanforderungen: Freie Betriebsmittel: 4 2 G= 3 10 f = (3 2 ) 6 4 1 6 Daraus berechnet man Restanforderungen R und den Vektor der vorhandenen Betriebsmittel v: 4 2 1 4 R= 0 1 5 2 v = (12 10) 8-56 © H.-U. Heiß, Uni Paderborn Befindet sich das System in einem sicheren Zustand ? Der Algorithmus zur Verklemmungsvermeidung ergibt der Reihe nach 1. P3 kann beendet werden: r3 = (0 1) ≤ f = (3 2) f : = f + b3 = (3 2) + (3 0) = (6 2) 2. P1 kann beendet werden: r1 = ( 4 2) ≤ f = (6 2) f : = f + b1 = (6 2) + (0 4) = (6 6) 3. P2 kann beendet werden: r2 = (1 4) ≤ f = (6 6) f : = f + b2 = (6 6) + (1 0) = (7 6) 4. P4 kann beendet werden: r4 = (5 2) ≤ f = (7 6) f : = f +b 4 = (7 6) + (5 4) = (12 10) = v Das System ist sicher, da eine Reihenfolge gefunden wurde (P3, P1, P2, P4), in der die Prozesse abgearbeitet werden können. (Diese Reihenfolge (P3, P1, P4, P2) ist ebenfalls möglich). 8-57 © H.-U. Heiß, Uni Paderborn 8.4.5 Verklemmungsentdeckung (deadlock detection) Sind die Restanforderungen nicht bekannt, so kann keine Verklemmungsvermeidung durchgeführt werden. Daher kann es zu Verklemmungen kommen. Wir müssen daher wenigstens eine Verklemmungssituation erkennen können. Dies gelingt indirekt durch die Bestimmung der Prozesse, die nicht in einer Verklemmung involviert sind. • Eine Prozessmenge P1, P2, ... , Pm heißt verklemmungsfrei, g.d.w. ∃ Permutation Pk1 , Pk2 ,.., Pkm mit ∀r ∈{1,2,...,m}: r r−1 r r akr ≤ f + ∑ bks s=1 bzw. ∀r ∈{1,2,...,m}: r r m r akr ≤ v − ∑ bks s=r d.h. es gibt eine Beendigungsreihenfolge der Prozesse derart, dass jede Anforderung durch das erfüllt werden kann, was von früher beendeten Prozessen freigegeben wird. 8-58 © H.-U. Heiß, Uni Paderborn Verklemmungsentdeckung • Ein Vergleich mit der Definition von „verklemmungsfrei“ mit der von „sicher“ zeigt weitgehende Übereinstimmung. • Bei „Sicherheit“ wird eine Permutation gesucht, die ausgeführt werden kann, wenn die alle Restanforderungen auf einmal gestellt werden. • Bei der „Verklemmungsfreiheit“ wird das gleiche bezüglich der aktuellen Anforderungen getan. • Wir können daher den gleichen Algorithmus (Banker-Algorithus), den wir für die Verklemmungsvermeidung eingesetzt haben, auch für die Verklemmungsentdeckung verwenden. • Wir müssen nur die Restanforderungen durch die aktuellen Anforderungen ersetzen. • Der Algorithmus muss dabei alle Prozesse einbeziehen. • Der Entdeckungsalgorithmus kann aufgerufen werden bei jeder Belegung periodisch im Leerlaufprozess bei Verdacht (evtl. manuell ausgelöst) 8-59 © H.-U. Heiß, Uni Paderborn Algorithmus zur Verklemmungsentdeckung procedure deadlock_detection(P: set of processes, v: vector, a:matrix, b:matrix, var answer: state, DP: set of processes) var f: vector; begin answer := undefined; DP := P; m f: = v − ∑ bi ; i=1 while answer = undefined do if ∃Pi ∈ DP: ai ≤ f then begin DP: = DP − {Pi }; f: = f + bi ; if DP = ∅ then answer:= no_deadlock; end else answer := deadlock; end; 8-60 © H.-U. Heiß, Uni Paderborn Spezialfall: Einexemplarbetriebsmittel Dann gilt aij ,bij ∈{0,1} Wartebeziehungen zwischen Prozessen lassen sich dann einfach berechnen: Prozess i wartet auf Prozess j, g.d.w. wij = 1 ⇔ ∃k: aik ⋅ b jk = 1 ( ) Die Matrix W = wij ist dann als Adjazenzmatrix des Wartegraphen aufzufassen. Satz Eine Verklemmung liegt genau dann vor, wenn der Wartegraph einen Zyklus enthält Eine Verklemmungsentdeckung reduziert sich dann zur Zyklenentdeckung in einem Graphen. (Tiefensuche, Aufwand O(|Kanten| + |Knoten|)) 8-61 © H.-U. Heiß, Uni Paderborn 8.4.6 Verklemmungsauflösung (deadlock resolution) • Jede Verklemmungsauflösung besteht darin, den Wartezyklus zu brechen. • Ist ein (geordneter) BM-Entzug nicht möglich, so bleibt nur der Abbruch mindestens eines Prozesses • Es stellt sich die Frage, welchen Prozess man abbrechen soll Kriterien • • • • • • • Größe der Anforderung Umfang der belegten Betriebsmittel Dringlichkeit Benutzer- / Systemprozeß Aufwand des Abbruchs Verlorengegangene Arbeit Restbedienzeit 8-62