4 B
ETRIEBSMITTELVERWALTUNGBetriebsmittel sind Objekte der Betriebsorganisation, die von Prozessen zu Definition und Fortschritt benötigt werden.
logische Betriebsmittel:
- Programme - Codebereiche - Datenbereiche - Zeitscheiben - logische Geräte - Dateien
- Kontrollblöcke, Listen - Speicherbereiche
physikalische Betriebsmittel:
- Zentralspeicher - Prozessor
- Geräte, Peripherspeicher
Betriebsmitel werden i. a. in verschiedenen Komponenten des Betriebssystems verwaltet, die auf die spezifischen Eigenschaften von BM-Klassen zugeschnitten sind und den Besonderheiten ihres Betriebs Rechnung tragen:
- Speicherverwaltung: Hauptspeicher, Page File - Programmverwaltung
- Prozeßverwaltung: Prozessoren
- E/A-Organisation: Geräte, Datenträger - Dateiorganisation: Dateien
Das vorliegende Kapitel soll gemeinsame Konzepte vorstellen und Fragestellungen behandeln.
Datenstrukturen der Betriebsmittel:
- physikalische Betriebsmittel
Beschreibung physikalischer Größen (z. B. Speichergrenzen, Verkabelung) - logische Betriebsmittel
* Parameter der Abbildung auf physikalische Betriebsmittel (z. B. Speichergrenzen, Geräteverweis, Datenträgerverweis, Lage auf Datenträger)
* logische Parameter des Betriebssystems (z. B. Dateiorganisationsform, Satzformat, Programmtyp)
- geteilte Betriebsmittel
Beschreibung der Aufteilung (z. B. Dateiverzeichnis, Blockbelegung, Speicherbelegungsinformation)
Allgemein:
- Betriebsmitteltyp
- Zugriffsbeschränkungen (z. B. Besitzer, Rechte, Schlüssel) - Zuteilungsstrategie-Parameter
- Betriebszustand (z. B. on-line, off-line)
- Wartungsinformationen (z. B. defekt Spuren, Fehlerhäufigkeit)
- Belegungszustand (z. B. frei/belegt von ..., angefordert von ...)
Ablage der Information:
- Beschreibungs- und Kontrollblöcke in Haupt- oder Peripherspeicher - bei gleichartigen Betriebsmittel u. U. Tabellen, Listen
- in Kontrollblöcken übergeordneter Strukturen
4.1 Betriebsmittelbelegung
4.1.1 Operationen
- Belege_eigen Prozeß fordert selbst Betriebsmittel für sich an (z. B. Datei öffnen)
- Belege_fremd Ein Prozeß fordert für einen fremden Prozeß Betriebsmittel an und weist es ihm zu (z. B. Speicherbereiche zur Prozeßerzeugung)
- Gib_frei Ein Prozeß gibt ein von ihm belegtes Betriebsmittel zurück
- Entziehe Ein Prozeß entzieht einem fremden Prozeß ein Betriebsmittel und gibt es frei
4.1.2 Realisierung der Operationen
Realisierung als Prozedur des Operationsaufrufers - Blockierung des Aufrufers für die Dauer der Operation - u. U. Adreßraumgrenzenüberschreitung erforderlich
Realisierung durch selbständigen Prozeß der über Auftragsschnittstelle angestoßen wird
- Nebenläufigkeit Auftraggeber-Operationsabwicklung
- auftragübergreifende Strategien können leichter realisiert werden - Aufträge werden an Auftragsschnittstelle zeitlich serialisiert:
kritische Abschnitte bei Operationsabwicklung werden dadurch zum Teil vermeidbar - Auftragsabwicklung unterliegt Systemprozeß:
erleichterte Realisierung von Schutzkonzepten Belege_eigen
Betriebsmittel frei ? Betriebsmittel anteilig verfügbar ?
Vermerke Betriebsmittel / Betriebsmittelanteil in Kontrollblock als "von Prozeß belegt"
J
N
Trage Prozeß in Warteliste ein und blockiere Prozeß in Zustand "BM-fordernd"
Ordne Prozeß Betriebsmittel zu
Gib_frei
BM-Warteliste leer?
Deblockiere Prozesse in Warteliste Vermerke BM / BM-Anteil in Kontrollblock
als "frei", u. U.: trage BM aus Prozeß-BM-Liste aus
N
J
Belege_fremd
Betriebsmittel frei
Betriebsmittel anteilig verfügbar?
? Vermerke BM / BM-Anteil
"von fremden Prozeß belegt",als ordne BM fremden Prozeß zu
Trage fremden Prozeß Warteliste ein undin blockiere
ihn in Zustand "BM- fordernd"
J N
Gib_frei
Vermerke BM / BM-Anteil als "frei"
und trage BM aus Prozeß-BM-Liste aus
BM-Warteliste leer ?
Solange möglich:
- Wähle Prozeß aus Warteliste aus, dessen Anforderung erfüllbar ist - Vermerke BM / BM-Anteil als von diesem Prozeß belegt, ordne Betriebsmittel diesem Prozeß zu
- Trage Prozeß aus Warteliste aus und deblockiere ihn N
J
Entziehe
Blockiere fremden Prozeß in Zustand "von BM verdrängt", trage Prozeß in Warteliste ein
Vermerke BM / BM-Anteil als "frei"
und in Verwaltung des fremden Prozesses als entzogen
Rette BM-Betriebszustand zur Wiederherstellung bei erneuter Zuteilung
Beispiele für Entzug:
- Prozessorentzug:
Prozessorstatus wird in PCB gerettet, bei erneuter Prozessorzuteilung wiederhergestellt.
- Arbeitsspeicherentzug:
Speicherbereiche werden partiell (Paging) oder insgesamt (Swapping) ausgelagert.
- Entzug eines defekt gewordenen Peripheriegeräts
Wenn kein Ersatzgerät zuordbar ist, muß Prozeß nicht erfolgreich abgebrochen und u.
U. vernichtet werden.
Die Neuzuordnung entzogener Betriebsmittel ist i. a. BM-Typ-spezifisch, bei bestimmten Situationen zum Teil auch nicht vorgesehen.
4.1.3 Strategien
Bei konkurrierenden Anforderungen knapper Betriebsmittel muß im Konfliktfall eine Auswahl getroffen werden:
- bestimmte Anforderungen werden sofort erfüllt, - andere müssen zurückgestellt werden.
=> Strategie zur Auswahl 1) Allgemeine Möglichkeiten
- zufällige Auswahl
- Auswahl im Hinblick auf Fairness gegenüber Prozessen - Auswahl im Hinblick auf gute Systemauslastung
2) Grundstrategien
- zeitliche Reihenfolge (Fairness)
- Prioritäten mit zeitlicher Reihenfolge kombiniert - Angebot und Nachfrage:
Momentan erfüllbare Anforderungen werden auch älteren, aber unerfüllbaren Anforderungen vorgezogen (Auslastung)
- Reservierung
Momentan erfüllbare Anforderungen werden auch älteren, aber unerfüllbaren Anforderungen vorgezogen, wenn sie zu diesen nicht in Konflikt stehen. Die Erfüllung jüngerer Anforderungen darf ältere Anforderungen nicht verzögern
3) Strategie Reservierung
- Belege_fremd und Gib_frei (fremd)
- in Gib_frei wird "Wähle Prozeß aus Warteliste aus, dessen Anforderung erfüllbar ist" durch folgenden Algorithmus ersetzt:
Sei m : Anzahl der Prozesse in Liste,
n : Anzahl der Betriebsmitteltypen
F = (f1, f2, ..., fn) : Freivektor
(z. B. f2= 3 => vom Betriebsmitteltyp 2 sind 3 Exemplare frei)
Ai = (ai1, ai2, ..., ain) : Anforderungsvektor für Prozeß Pi i = 1, ..., m
B = (b1, b2, ..., bn) : Bestellvektor
Initialisierung: B = (0, 0, ..., 0) Ein Prozeß Bi wird genau dann ausgewählt, wenn gilt:
bj + aij <= fj für alle j mit aij <> 0.
Wird ein Prozeß ausgewählt, so werden seine Anforderungen erfüllt:
fj = fj - aij für alle j,
sonst werden seine angeforderten Betriebsmittel bestellt:
bji = bj + aij für alle j.
Beispiel:
Gegeben:
Anzahl der Betriebsmitteltypen n = 7 Anzahl der Prozesse in Liste m = 5
Freivektor F = (3, 5, 1, 4, 4, 4, 2) Anforderungsvektoren A1 = (2, 2, 1, 0, 0, 0, 0)
A2 = (0, 1, 1, 1, 0, 0, 0) A3 = (0, 0, 0, 2, 2, 2, 0) A4 = (0, 3, 0, 3, 0, 2, 1) A5 = (0, 0, 0, 0, 0, 0, 2)
Prozeß B + Ai Entscheidung Freivektor Bestellvektor
3 5 1 4 4 4 2 0 0 0 0 0 0 0
P1 2 2 1 0 0 0 0 auswählen 1 3 0 4 4 4 2 0 0 0 0 0 0 0
P2 0 1 1 1 0 0 0 bestellen 1 3 0 4 4 4 2 0 1 1 1 0 0 0
P3 0 0 0 3 2 2 0 auswählen 1 3 0 2 2 2 2 0 1 1 1 0 0 0
P4 0 4 0 4 0 2 1 bestellen 1 3 0 2 2 2 2 0 4 1 4 0 2 1
P5 0 0 0 0 0 0 3 bestellen 1 3 0 2 2 2 2 0 4 1 4 0 2 3
Variante: BS 2000
Ein Prozeß wird zum "Sammeltask" erklärt. Dieser Prozeß darf Betriebsmittel "sammeln", d. h. Teilbedingungen durchführen. Er steht als erster in der Liste und belegt bei jedem Gib_frei - Aufruf soviele Betriebsmittel wie möglich.
4) Prozeßorganisation für Betriebsmittelverwaltung für Belege_fremd, Gib_frei (fremd)
Benutzerprozesse:
SENDE (Anforderung) WARTE (Belegung) SENDE (Freigabe) a) 2 Sekretäre
1 Belegen 2 Freigeben
b) 1 Sekretär mit phasenparalleler Organisation BM - Verwalter
Warte (Anforderung oder Freigabe)
Anforderung registrieren
prüfen und belegen
Freigeben
4.2 Verklemmungen
Definition: Verklemmung (Deadlock)
Eine Menge von Prozessen heißt verklemmt, wenn jeder der Prozesse deshalb blockiert ist, weil er auf ein Betriebsmittel wartet, das von einem anderen Prozeß bereits belegt ist. Keiner der Prozesse kann fortgesetzt werden, da die Fortsetzung nur nach Freigabe eines Betriebsmittels durch einen anderen ebenfalls blockierten Prozeß erfolgen könnte: Zirkulare Wartebedingung.
Beispiel: Verklemmung
Prozeß P1 Prozeß P2 Prozeß P3
... ... ...
Belege(Drucker) exklusiv Belege(Band) exklusiv Belege(DateiA) exklusiv
... ... ...
=> Belege(DateiA) exklusiv Belege(Drucker) exklusiv Belege (Band) exklusiv
... ... ...
Gib_frei (Drucker) Gib_frei (Band) Gib_frei (DateiA) Gib_frei (DateiA) Gib_frei (Drucker) Gib_frei (Band)
... ... ...
Auch Semaphore können als Betriebsmittel betrachtet werden, die mittels P-Operation belegt und mittels V-Operation freigegeben werden. Durch ungeeignete Prozeßorganisation kann auch hier eine Verklemmung auftreten.
Beispiel: Verklemmung mit Semaphoren var A, B: sema;
Prozeß P1 Prozeß P2
... ...
P(A) P(B)
... ...
P(B) P(A)
... ...
Beispiel:
var A, B: sema;
preset (A,1);
preset (B,1);
Prozeß P1 Prozeß P2
... ...
P(A) P(B)
... ...
V(B) V(A)
Verklemmungen können auftreten, wenn alle der folgenden Ursachen erfüllt sind:
A: Notwendige Begingungen
1. Hold and Wait - inkrementelle Belegung
Es werden neue Betriebsmittel angefordert, während andere Betriebsmittel bereits belegt sind.
2. Mutual Exclusion - exklusive Belegung
Belegung eines Betriebsmittels schließt Belegung desselben Betriebsmittels durch anderen Prozeß aus
3. No Preemption - keine Verdrängung
Belegte Betriebsmittel können nicht entzogen werden.
B: Notwendige und hinreichende Bedingung:
4. Circular Wait
Es existiert eine zyklische Wartebedingung.
Umgang mit Verklemmungen
Vermeidung (prevention): durch Eliminierung einer (oder mehrerer) der o. a. Ursachen Verhinderung (avoidance): erfüllbare Betriebsmittelanforderungen werden nicht gewährt,
wenn Verklemmungsgefahr besteht
Zulassung: Entdeckung (detection) und Auflösung (Recovery) der Verklemmung
Ignorieren (Vogel Strauss Strategie)
Definitionen:
Seien in einem bestimmten Betriebszustand:
V = (v1, v2, ..., vn) Vektor der jeweiligen Anzahl der vorhandenen Betriebsmittel Beispiel: V = (1,3,1) mit v1 = DateiA, v2 = Band, v3 = Drucker B = ( bij ) Belegungsmatrix
Prozeß i hat bij Exemplare des Betriebsmittels vj belegt A = ( aij ) Anforderungsmatrix
Prozeß i fordert aij Exemplare des Betriebsmittels vj an F = (f1, f2, ..., fn ) Freivektor
fi Exemplare des Betriebsmittels vi sind frei Ermittlung des Freivektors: fj = vj -
i bij4.2.1 Vermeidung von Verklemmungen
Man unterscheidet zwischen Vermeidung und Verhinderung!
Verklemmungen können vermieden werden, wenn mindestens eine der o. a. Ursachen per Systemdesign eliminiert wird.
1) Hold and Wait
Eliminierung durch folgende Methode:
- Gesamtanforderungen aller Betriebsmittel zu Beginn der Verarbeitung => extrem schlechte Betriebsmittelauslastung, da zuviele Betriebsmittel angefordert werden und die meiste Zeit ungenutzt bleiben.
- Bei neuer Anforderung werden zunächst alle vom anfordernden Prozeß zuvor belegten Betriebsmittel freigegeben.
ist i. a. nicht eliminierbar.
3) No Preemption
-> Wartende Prozesse werden zwangsenteignet Problem:
Betriebsmittel können sich nach der Enteignung in inkonsistentem Zustand befinden, d.
h. Wiederaufsetzung bei der Unterbrechungsstelle ist i. a. nicht möglich.
4) Circular Wait
-> vorgeschriebene Reihenfolge der Anforderungen Beispiel: lineare Ordnung
Sei M = {BMx } und F : M -> N,
dann kann die Anforderung eines neuen BMx nur dann erfüllt werden, wenn F(x) > F(i) für alle bisher belegten BMi
F(Leser) = 1 F(Platte) = 5 F(Band) = 7 F(Drucker) = 12
=> Belegungsreihenfolgen: Leser -> Band erlaubt Band -> Leser verboten
- Band muß erst freigegeben werden, bevor von vorne angefangen werden kann - Reihenfolge gilt nicht zwischen allen Prozessen, sondern nur innerhalb eines
Prozesses
- wenn P1 Leser hat und P2 benötigt diesen auch, so muß P2 warten
4.2.2 Entdeckung und Behandlung
Wenn Verklemmungen auftreten, ist es notwendig, daß das System:
- den Zustand erkennt => Algorithmus zur Erkennung, der periodisch aufgerufen wird - die Verklemmung auflöst => Strategie zur Auswahl eines "Opfers" (z. B. nach Priorität,
entstehenden Schaden)
4.2.2.1 Algorithmus zur Entdeckung von Verklemmungen Es gilt:
Eine Menge von Prozessen (P1, P2, ..., Pm) ist verklemmungsfrei, wenn es eine Folge Pk1 ... Pkm gibt, so daß für jedes x [1;m] gilt:
(1) Akx <= V -
Bky mit y = x...mm : Anzahl der Prozesse n : Anzahl der Betriebsmittel Beispiel:
Ist ein System in dem Zustand V = (3,3), B = , A = verklemmt?
1. Möglichkeit: P1 -> P2
A1 = (0,2) <= V -
Bky = (3,3) - ( (1,0) + (0,2) ) = (3,3) - (1,2) = (2,1) => nicht möglich.2. Möglichkeit: P2-> P1
A2 = (3,0) <= V -
Bky = (3,3) - ( (1,0) + (0,2) ) = (3,3) - (1,2) = (2,1) => Nicht möglich=> System verklemmt!
Für die praktische Überprüfung wird die Ungleichung (1) angewendet.
(2) Akx <= V -
Br +
Bky mit y = 1...x-1 und r = 1...mDie Teilsumme F = V -
Br stellt den augenblicklichen freien Vorrat an Betriebsmitteln dar=>
(3) Akx <= F +
Bky mit y = 1...x-1 EntdeckungF := V - Br für r=1...m
M := {1, 2, ... m}
H := M
wähle k aus H
k J
N
H := H \ {k} F := F + B k
M := M \ {k}
M = {} ? A <= F ?
N H = {} ?
J J
N
verklemmungsfrei alle Prozesse in M
verklemmt Beispiel:
3 Prozesse, 2 Betriebsmitteltypen V = (5,5)
B = A =
Ist das System verklemmungsfrei?
F = (5,5) - ( (1,0) + (0,2) + (2,1) ) = (2,2) M = {1,2,3} H = {1,2,3}
k = 1: A1= (2,0) <= (2,2) = F ? ja => P1 kann laufen F = (2,2) + (1,0) = (3,2)
M = {2,3} H = {2,3}
k = 3: A3= (1,3) <= (3,2) = F ? nein => H = {2}
F = (3,4)
k = 3: A3= (1,3) <= (3,4) = F ? ja => P3 kann laufen F = (5,5)
M = { } => verklemmungsfrei
4.2.2.2 Behandlung von Verklemmungen - Ein "Opfer" auswählen
Welche Betriebsmittel und welche Prozesse können mit möglichst geringem Schaden verdrängt werden.
Kriterien:
* Priorität
* Prozeß suchen, der geringsten Schaden erleidet bzw. verursacht - Anzahl und Typ der bereits belegten Betriebsmittel
- Auswirkung auf andere Prozesse - Behandlung des "Opfers" (Rollback)
* Beenden und Neustarten des Prozessors
* Rücksetzen auf Wiederaufsetzpunkt - Vermeiden von "Verhungern" (Starvation)
4.2.3 Verhinderung von Verklemmungen
Man unterscheidet zwischen Verhinderung und Vermeidung!
Verklemmungen können u. U. verhindert werden, wenn augenblicklich erfüllbare Anforderungen zurückgewiesen werden.
Beispiel:
BM1 BM2
P1 P2
BM2
BM1 Verklemmung
Verhinderung der Verklemmung durch zurückweisen der Anforderung BM2 von P2 Voraussetzung: die spätere Anforderung BM1 von P2 ist zu diesem Zeitpunkt bekannt
Algorithmus:
Die Routine Belege_fremd wird erweitert um zu prüfen, ob die Belegung zu einer Verklemmung führen kann. Jeder Prozeß muß also seinen maximalen Betriebsmittelbedarf im voraus melden.
Idee: "Rechnerisches" erfüllen der Gesamtanforderungen, dann Algorithmus zur Entdeckung.
=> G = ( gij ) Matrix der Gesamtanforderungen (ersetzt A) G - B ersetzt die noch zu erwartenden Anforderungen Es gilt:
Eine Anforderung kann dann gewährt werden, wenn sie das System in einem sicheren Zustand beläßt.
Ein Zustand heißt sicher, wenn es eine Folge Pk1, Pk2, ..., Pkm gibt, so daß für jedes 1 <= x <=
m gilt:
Gkx - Bkx <= V -
Bky für y = x...m bzw.Gkx <= V -
Bky für y = x+1...m bzw.Gkx <= F +
Bkyfür y = 1...xDiese Bedingung muß nach der rechnerischen Erfüllung der aktuellen Anforderungen gelten.
Verhinderung
r l F := V - B - A für r = 1...m
M = {1, 2, ..., m }
l = Nr. des anfordernden Prozesses
H := M
l in H ?
wähle k aus H N J
k := l
G <= F + B ?k k F := F + B k
N
M := M \ { k}
k = l ? J
N
unsicher, nicht zuweisen H := H \ { k }
H = { } ? J J
F := F + A l
sicher, Zuweisung erlaubt Beispiel:
Gegeben: V = (5,5,5) B = G = P3->P2->P1
Kann die weitere Anforderung A1 = (0,1,0) von P1 gewährt werden?
B' =
F = (5,5,5) - ( (1,0,2) + (0,1,1) + (1,3,0) ) - (0,1,0) = (3,0,2) M = {1,2,3} H = {1,2,3} l = 1
k = 1: G1 = (1,5,2) <= (3,0,2) + (1,1,2) = (4,1,4) <= nein H = {1,3}
k = 3: G3 = (1,3,2) <= (3,0,2) + (1,3,0) = (4,3,2) <= ja F = (3,0,2) + (1,3,0)
= (4,3,2) M = {1,2} H = {1,2}
k = 1: G1 = (1,5,2) <= (4,3,2) + (1,1,2) = (5,4,4) <= nein H = {2}
k = 2: G2 = (1,2,3) <= (4,3,2) + (0,1,1) = (4,4,3) <= ja F = (4,3,2) + (0,1,1) = (4,4,3) M = {1} H = {1}
k = 1: G1 = (1,5,2) <= (4,4,3) + (1,1,2) = (5,5,5) <= ja F = (4,4,3) + (1,1,2) = (5,5,5)
=> sicher, die weitere Anforderung kann erfüllt werden.