8 Betriebsmittelverwaltung 8.1 Strukturen und Varianten

Werbung
© 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
Herunterladen