Betriebssysteme

Transcription

Betriebssysteme
Informatik II
Betriebssysteme
Betriebssysteme
Rainer Schrader
Zentrum für Angewandte Informatik Köln
26. November 2008
1 / 73
2 / 73
Betriebssysteme
Betriebssysteme
• „Betriebssysteme“ ist ein Standardthema in jedem
Informatik-Curriculum
• wir können es in dieser Grundvorlesung nur kurz (zwei Vorlesungen)
anreißen
Gliederung
• wir beginnen mit einer Übersicht und geben dann exemplarisch erste
• Aufgaben
• Scheduling
Einblicke in zwei zentrale Themen:
• Prozess-Scheduling und
• Speicherverwaltung
• Speicherverwaltung
• im Hauptstudium wird regelmäßig eine Spezialvorlesung
„Betriebssysteme” angeboten
• weiterführende Literatur:
A. S. Tanenbaum: Moderne
Betriebssysteme, 2. Auflage, Person Studium, 2002
3 / 73
4 / 73
Betriebssysteme
Betriebssysteme
Aufbau eines Computersystems (Schichtenmodell)
Was ist ein Betriebssystem ?
Das Betriebssystem (BS)
User 1
• ist ein Programm, das die Verbindung zwischen Nutzer und Hardware
User 2
User 3
. . . . . . . . .
herstellt
• es schafft dem Nutzer eine Umgebung, in der seine Programme
Compiler, Editor, . . . , Spiele, . . . ., DB-System
einfach und schnell ausgeführt werden können
Anwendungsprogramme
• daher muss es vorhandene Hardware-Ressourcen (CPU-Zeit, Speicher,
Ein-/Ausgabe …) den Anwendungsprogrammen zur Verfügung stellen
Betriebssystem
• und dabei Kriterien wie Fairness und Effizienz berücksichtigen
Computerhardware
5 / 73
6 / 73
Betriebssysteme
Betriebssysteme
Ein Betriebssystem
• verschleiert die Komplexität der Maschine dem Anwender gegenüber
(Abstraktion),
Nach DIN 44300 umfasst ein Betriebssystem:
• stellt Benutzerschnittstellen bereit (Shell, Kommandointerpreter,
Desktop, …),
“die Programme eines digitalen Rechensystems, die zusammen mit den
• verwaltet Maschinen-Ressourcen wie
Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten
• Prozessor(en),
des Rechensystems bilden und die insbesondere die Abwicklung von
• Hauptspeicher (Cache),
Programmen steuern und überwachen”
• Hintergrundspeicher (Platte, Band, …),
• Geräte (Terminal, Scanner, Drucker, Platten, …),
• Rechenzeit
• koordiniert den Ablauf von Prozessen.
7 / 73
8 / 73
Betriebssysteme
Betriebssysteme
2. Computergeneration (∼1955–1965)
Historische Klassifikation
• Charakteristikum: Transistoren und Stapelverarbeitung
• Eingabe eines Auftrags in geschlossener Form: Programm + Daten +
Steueranweisungen
1. Computergeneration (∼1945–1955)
• Ausgabe nach Abschluss der Bearbeitung i.d.R. als Ausdruck auf Papier
• Batch-Betrieb (Stapelverarbeitung)
• hatte kein Betriebssystem
• Charakteristikum: Röhren und Steckbretter
• einfache Job-Control-Sprache
• Programmiersprachen (Assembler, Cobol, Fortran, …)
• Programmierung via Steckbrett, Lochstreifen, Lochkarten
• keine (höheren) Programmiersprachen
• Magnetbänder als Zwischenspeicher
10 / 73
9 / 73
Betriebssysteme
Betriebssysteme
3. Computergeneration (∼1965–1980)
4. Computergeneration (seit ∼1980)
• Charakteristikum: Integrierte Schaltkreise und Multiprogrammierung
• Kommunikation mit Computer via Tastatur, Bildschirm zum Starten,
• Charakteristikum: Personal Computer (PC)
• UNIX und C
Verfolgen und Beeinflussen des Programms
• Multiprogrammierung (mehrere Programme gleichzeitig im Speicher)
• simulierte quasisimultane Bearbeitung der einzelnen Programme,
• Multitasking, d.h. quasisimultane Bearbeitung weitgehend
unabhängiger Programmabschnitte innerhalb eines Auftrags
Timesharing-Betrieb mit Terminals
• MS-DOS, Windows
• Mehrprozessorsysteme mit verteiltem Betriebssystem
• SPOOLING (simultaneous peripheral operation on line) direktes
Speichern von Rechenaufträgen und Druckaufträgen auf der Platte
• MULTICS als UNIX-Vorgänger (MIT)
11 / 73
12 / 73
Betriebssysteme
Betriebssysteme
Klassifikation nach Betriebsart des Rechensystems
Weitere Entwicklung
• Stapelverarbeitungs-Betriebssysteme (batch processing)
• Dialogbetrieb-Betriebssysteme (interactive-, dialog-processing)
• Netzwerk-Betriebssysteme (network processing)
• verbesserte Unterstützung der Parallelverarbeitung
• Realzeitfähigkeiten zur Unterstützung von Multimedia-Anwendungen
(Audio, Video)
• Realzeit-Betriebssysteme (realtime processing, fest nach oben
• Software in Eingebetteten Systemen benötigt
begrenzte Antwortzeiten)
Betriebssystem-Unterstützung (Palm OS, Windows CE)
• Betriebssysteme für Prozessrechner für Steuerungs- und
• …
Regelaufgaben (kurze Antwortzeiten gefordert)
• Universelle Betriebssysteme (erfüllen mehrere Kategorien)
13 / 73
Betriebssysteme
14 / 73
Betriebssysteme
Klassifikation nach der Anzahl gleichzeitig laufender Programme
Klassifikation nach der Anzahl gleichzeitig arbeitender Benutzer
• (task =
b Prozess =
b Aufgabe, Auftrag)
• Einzelprogrammbetrieb (single tasking): Abarbeitung mehrerer
• Einzelbenutzerbetrieb (single user mode)
Computer exklusiv für einen Benutzer
Programme nacheinander
• Mehrbenutzerbetrieb (multiuser mode)
• Mehrprogrammbetrieb (multitasking): Abarbeitung mehrerer
Mehrere Nutzer greifen via Terminals oder Netzwerkverbindung auf den
Computer zu
Programme gleichzeitig bei mehreren CPUs oder zeitlich verschachtelt
=
b quasiparallel
15 / 73
16 / 73
Betriebssysteme
Betriebssysteme
Strukturierung eines BS in mehreren Schichten/Schalen:
Klassifikation nach der Anzahl der verwalteten Prozessoren/Rechner
• Ein-Prozessor-Betriebssystem (Rechner, die auf von-Neumann-
Architektur aufgebaut sind), haben nur einen Universalprozessor.
Zugehörige Betriebssysteme unterstützen nur einen Prozessor
Hardware
• Mehr-Prozessor-Betriebssystem (Hier existieren wenigstens zwei
BS - Kern
Prozessoren, die auf verschiedene Weisen gekoppelt sein können.)
Anwendungsprogramme
18 / 73
17 / 73
Betriebssysteme
Betriebssysteme
Strukturierung eines BS in mehreren Schichten/Schalen:
Strukturierung eines BS in mehreren Schichten/Schalen:
• Die unterste Schicht
• umfasst alle hardwareabhängigen Teile des Betriebssystems
• die nächste Schicht enthält grundlegende E/A-Dienste für
• (insbesondere die Verarbeitung von Interrupts)
• setzt direkt auf die Rechner-Hardware auf
• die darauffolgende Schicht behandelt Kommunikations- und
Plattenspeicher und Peripheriegeräte
Netzwerkdienste, Dateien und Dateisysteme
• verwaltet reale Betriebsmittel
• stellt statt dessen virtuelle Betriebsmittel bereit
• weitere Schichten sind je nach Anforderungen möglich
• wird auch als BIOS (Basic I/O-System) bezeichnet
• alle weiteren Schichten arbeiten dann hardwareunabhängig
19 / 73
20 / 73
Betriebssysteme
Betriebssysteme
jede Schicht
Prozesse
• beim Multitasking-/Multiuser-Betrieb müssen die Betriebsmittel auf die
• bildet abstrakte (virtuelle) Maschinen
• diese kommunizieren mit benachbarten Schichten mittels
Programme verteilt werden
• zu jedem Programm muss vermerkt werden, welche Betriebsmittel
wohldefinierter Schnittstellen
(Speicher, CPU-Zeit, …) von ihm benötigt werden
• ruft ggf. Funktionen in der nächstunteren Schicht auf
• stellt Funktionen für die nächsthöhere Schicht zur Verfügung
• diese Informationen über benötigte Betriebsmittel für Programme
werden zusammen mit dem Programm selbst auch Prozess
(task) genannt
• Gesamtheit der Funktionen einer Schicht: Dienste der Schicht
• Gesamtheit der Vorschriften, die für Nutzung der Dienste einzuhalten
Prozess = Programm im Stadium der Ausführung
sind: = Protokoll
• höhere BS-Schichten sind durch Programmierschnittstellen (API =
• in Multitaskingsystemen muss das BS die Abarbeitungsreihenfolge der
Application Program Interface) vom Kern getrennt
Prozesse festlegen (Scheduling)
• dadurch haben Änderungen am BS-Kern oder der Hardware keine
• das Scheduling ist selbst in Spezialfällen (nonpreemptive Scheduling)
(kaum) Auswirkungen auf Anwenderprogramme
aus algorithmischer Sicht schwierig, wie wir später sehen werden
22 / 73
21 / 73
Prozessverwaltung
Betriebssysteme
Betriebssysteme
• ein Prozess („Elternprozess”) kann andere Prozesse („Kindprozesse“)
• bei gleichzeitigem Zugriff von zwei Prozessen auf das gleiche
erzeugen
Betriebsmittel muss dieser Zugriff koordiniert werden
• ein Programm (Job) in einem Multiprogramm-System kann mehrere
• dazu ordnet man den Prozessen Prozesszustände zu, die die
Prozesse (Multiprocessing) erzeugen
Koordination herstellen:
• z.B. in Unix kann man dem Interpreter (der shell) das Kommando
geben:
Prozesszustand
running
ready
cat Text1 Text2 | pr | lpr
• dieses Kommando erzeugt drei Prozesse:
waiting
(1) Aneinanderhängen von Text1 und Text2
(2) Konvertieren einer Textdatei in eine ausdruckfähige Datei
blocked
new
killed
terminated
(3) Ausdrucken
• (durch “|” wird die Ausgabe eines Prozesses zur Eingabe des nächsten)
• bei Einprozessorsystemen ist nur ein Prozess aktiv, die anderen sind
Bedeutung
Prozess wird gerade ausgeführt
Prozess ist zur Ausführung bereit und wartet auf einen
freien Prozessor
Prozess wartet auf das Eintreten eines Ereignisses (z.B.
auf Freigabe eines von ihm belegten Betriebsmittels)
Prozess wartet auf ein fremdbelegtes Betriebsmittel
Prozess wird erzeugt
Prozess wird vorzeitig abgebrochen
Prozess ist beendet
blockiert
23 / 73
24 / 73
Betriebssysteme
Betriebssysteme
Zustandsdiagramm (Übergänge zwischen Prozesszuständen)
terminated
new
admitted
interrupted
ready
Bei Prozessen ist das Betriebssystem primär zuständig für die
Prozessverwaltung:
exit
• Aufteilung von Speicherplatz und CPU-Zeit
• Bereitstellung von Mechanismen zur Synchronisation und
running
Kommunikation unter Prozessen
• Behandlung von Verklemmungs-Situationen („Deadlock“)
scheduler dispatch
I/0
or
event wait
I/0
or
event completion
waiting
25 / 73
26 / 73
Betriebssysteme
Betriebssysteme
• im Betriebssystem werden Prozesse durch Prozesskontrollblöcke
Die Kommunikation zwischen Prozessen erfolgt durch:
(PCB) repräsentiert
• Message Passing oder
• Shared Memory
• diese enthalten alle für das Betriebssystem wichtigen Informationen über die
Prozesse
• z.B. sind folgende Informationen gespeichert:
PCB-Feld
Status
Programmzähler
Speichermanagment
E/A-Status
Accounting
CPU-Scheduling
Bedeutung
enthält den Prozesszustand
enthält die Adresse der nächsten auszuführenden Instruktion
enthält die letzten Werte der Speicherregister, Seitentabellen,
und weitere Informationen für die Speicherverwaltung
enthält Listen zugeordneter E/A-Geräte, offener Dateien, …
enthält die verbrauchte CPU-Zeit, Zeitbeschränkung, Buchungszahlen, …
enthält Prioritäten, Zeiger auf Warteschlangen und andere
Scheduling-Parameter
27 / 73
Message Passing
• das BS baut eine uni- oder bidirektionale Verbindung zwischen zwei
Prozessen A und B auf
• dazu dienen Systemaufrufe wie open_connection,
accept_connection oder close_connection
• mit send und receive erfolgt ein Nachrichtenaustausch über diese
Verbindungen
28 / 73
Betriebssysteme
Betriebssysteme
Singletasking
Shared Memory
• der Hauptspeicher enthält:
• ein Prozess hebt die exklusive Nutzung von Speicherbereichen auf
• über diese Speicherbereiche können Nachrichten ausgetauscht werden
• den Betriebssystemkern
• Prozess A speichert Nachrichten an Prozess B in dessen
• darauf wird ein aufgerufener Prozess exklusiv in den Speicher
geladen
• darauf aufsetzend den Command Interpreter (CI)
Speicherbereich ohne Umweg über den BS-Kern
Bei Multiprogramming und Multitasking können daneben mehrere Prozesse gleichzeitig im Speicher sein:
• Vorteile von Shared Memory gegenüber Message Passing:
• grosse Datenmengen können schneller übertragen werden
Pj
........
• mögliche Probleme bei Shared Memory:
P2
• Synchronisation und Konsistenz:
P1
• A muss geschrieben haben, erst danach kann B lesen
CI
BS-Kern
Das BS regelt den Zugriff der Prozesse auf die CPU → Scheduling.
29 / 73
30 / 73
Betriebssysteme
Betriebssysteme
Das Scheduling geschieht auf zwei Ebenen:
• der Langzeit-(Job)Scheduler ist zuständig für die Prozesse, die in
Speicher geladen werden
• der Kurzzeit-(CPU)Scheduler legt fest, welcher der geladenen
Scheduling
Prozesse im ready-Status wann auf CPU zugreifen kann
• Aufgaben
• Scheduling
• gute Scheduler achten auf einen ausgewogenen Job-Mix zwischen
E/A-intensiven und rechenintensiven Prozessen im Interesse einer
guten Auslastung des Gesamtsystems
• Speicherverwaltung
• bei Multitasking organisiert das Betriebssystem das timesharing meist
durch eine Round-Robin-Strategie:
• Prozesse erhalten Zeitintervalle zur Bearbeitung zugeteilt
• nach Ablauf des Zeitintervalls wird der Prozess zugunsten eines
anderen unterbrochen und hinten in eine Prioritätsschlange
eingefügt
31 / 73
32 / 73
Betriebssysteme
Betriebssysteme
• wenn die Nachfrage das Angebot übersteigt, ist auch eine Koordination
Die Ziele beim Prozess-Scheduling umfassen
des Zugriffs auf Betriebsmittel nötig
• Fairness (kein Job sollte anderen gegenüber ohne Sondervereinbarung
• Scheduler koordinieren dann die Prozesse durch Einsortieren in eine
bevorzugt werden)
Warteschlange, wodurch die Zuweisung des Prozessors an die
Prozesse geregelt wird
• niedrige Ausführungszeit (turnaround time) (Zeitspanne von Jobbeginn
bis Jobende; enthält die Summe der Zeiten in Warteschlangen, der
Ausführung selbst (Bedienzeit) und der Zeit für Ein- und Ausgabe)
• Schedulingstrategien versuchen bestimmte Ziele zu realisieren:
• niedrige Wartezeit (waiting time) (Die Schedulerstrategie beschränkt
• möglichst hohe CPU-Auslastung (Wunsch : 100%, real 40–90%)
• hoher Durchsatz (throughput)
sich auf die Minimierung der Wartezeit in der ready-Liste)
• niedrige Antwortzeit (response time) (Zeit zwischen interaktiver Eingabe
und Ausgabe der Antworten auf ein Ausgabegerät)
• d.h. möglichst hohe Zahl an Jobs pro Zeiteinheit als Maß für hohe
Systemauslastungdarauf
33 / 73
34 / 73
Betriebssysteme
Betriebssysteme
• obige Ziele können natürlich nicht gleichzeitig verfolgt werden,
• z.B. führt die Bevorzugung kurzer Prozesse zu gutem Durchsatz und
• das Scheduling ist für das BS ein zentralen und recht kompliziertes
Gebiet
niedriger Antwortzeit, verletzt aber die Fairness
• wir wollen uns einen einen ersten Eindruck verschaffen
• wir beschäftigen uns nur mit dem Fall, in dem laufende Prozesse nicht
• ; ein idealer Scheduling-Algorithmus existiert nicht
• daher ist es sinnvoll, in einem Scheduling-Algorithmus alle möglichen
unterbrochen werden dürfen (non-preemptive Scheduling)
Schedulingstrategien zu integrieren
• wir betrachten zunächst den 1-Prozessorbetrieb
• je nach konkreter Situation können verschiedene der oben genannten
Ziele stärker berücksichtigt werden
35 / 73
36 / 73
Betriebssysteme
Betriebssysteme
Beispiel:
Scheduling-Strategien
• es kommen fast gleichzeitig drei zu bearbeitende Jobs mit
Rechenzeitbedarf 9, 3 und 1 Zeiteinheiten an
• first-come-first-served (FCFS oder FIFO): Jobs werden bei ihrem
• die first-come-first-served-Strategie bearbeitet zuerst der Job mit
Entstehen in die Warteschlange eingefügt
Laufzeit 9, danach der mit Laufzeit 3 und schließlich der mit Laufzeit 1
abgearbeitet
• shortest-job-first (SJF): Prozesse mit (geschätzt) kürzester
Ausführungzeit werden zuerst bedient
• Für diese Reihenfolge beträgt die mittlere Fertigstellungszeit
• highest-response-ratio-next (HRN): Jobs mit maximalem Verhältnis
1
34
1
(9 + 12 + 13) =
= 11 Zeiteinheiten
3
3
3
Ausführungszeit
Bedienzeit
• die shortest-job-first-Strategie wählt die umgekehrte Reihenfolge
• die mittlere Fertigstellungszeit ist
werden zuerst bedient (den Zeiten liegen Schätzungen zugrunde bzw.
werden aktualisiert)
1
(1 + 4 + 13) = 6 Zeiteinheiten
3
• priority-scheduling (PS): ein Job, der in ready-Liste aufgenommen
wird, wird in die Warteschlange gemäß seiner Prioritäten einsortiert
• berechnet SJF stets eine Reihenfolge der Jobabarbeitung mit kleinster
mittlerer Fertigstellungszeit?
37 / 73
38 / 73
Betriebssysteme
Betriebssysteme
Satz
• die SJF-Strategie hat aber den Nachteil, dass sie das Fairnessgebot
SJF berechnet zu einer Folge von n Jobs mit Ausführungszeiten t1 , t2 , . . . , tn eine
Abarbeitungsreihenfolge mit minimaler mittlerer Fertigstellungszeit.
nicht beachtet
• bei kontinuierlich entstehenden neuen Jobs kann es zum Verhungern
Beweis:
• die mittlere Fertigstellungszeit bei Abarbeitung der Jobs in Reihenfolge
Ji1 , Ji2 , . . . , Jin beträgt:
(starvation) eines Jobs mit hoher benötigter Rechenzeit kommen
Bemerkungen zu HRN und PS:
k
n
n
1 XX
1X
tij =
(n + 1 − k )tik
n
n
k =1 j =1
• highest-response-ratio-next (HRN):
k =1
• bevorzugt Jobs mit kurzer Bedienzeit
• dieser Ausdruck wird minimiert, wenn
• mit zunehmender Wartezeit steigt aber auch die Präferenz für
Jobs mit langen Bedienzeiten
nti1 + (n − 1)ti2 + · · · + 2tin−1 + tin
• priority-scheduling (PS)
minimiert wird
• letzterer Ausdruck wird aber offensichtlich für
• bei statischen Prioritäten können Prozesse wie bei SJF
verhungern
ti1 ≤ ti2 ≤ · · · ≤ tin−1 ≤ tin
• das kann mittels dynamischer Prioritätenzuweisung verhindert
werden
minimiert,
• d.h. bei jeder von der SJF-Strategie gewählten Reihenfolge.
39 / 73
40 / 73
Betriebssysteme
Betriebssysteme
Wir betrachten nun Scheduling in Multiprozessorsystemen (non-preemptive)
Szenario:
• sei wi > 0 ein zu Ji gehöriges Gewicht, 1 ≤ i ≤ n
• die mean weighted finish time (MWFT) unter S ist:
• wir haben m gleichartige Prozessoren P1 , . . . , Pm
• auf ihnen sollen n Jobs J1 , . . . , Jn mit Ausführungzeiten t1 , . . . , tn
abgearbeitet werden
MWFT(S) =
• es gibt keine Abhängigkeiten zwischen den Jobs (Prozessen)
n
1X
wi fi
n
i =1
• sei Tj Zeitpunkt, zu dem Prozessor Pj alle durch S zugewiesenen
• ein Belegungsplan (Schedule) S legt für jeden Job Ji den
Jobs abgearbeitet hat
Prozessor und das Zeitintervall zur Abarbeitung fest
• dann beträgt die Fertigstellungszeit (makespan, finish time
• sei fi Zeitpunkt, zu dem die Abarbeitung von Ji unter S beendet ist
• dann beträgt die mittlere Fertigstellungszeit (mean finish time
(FT)) von S:
FT(S) = max {Tj }
1≤j ≤m
(MFT)) der Jobs unter S:
• Ziel: bestimme einen Schedule S, der die jeweils gewünschte
n
1X
MFT(S) =
fi
n
Zielfunktion MFT(S), MWFT(S) bzw. FT(S) minimiert
i =1
42 / 73
41 / 73
Betriebssysteme
Betriebssysteme
Beispiel:
• man kann zeigen, dass alle drei Probleme in einem präzisierbaren
Belegungsplan für 10 Jobs
J1 , J2 , . . . , J10
t1 , t2 , . . . , t10 für m = 3 Prozessoren:
Sinne schwierig sind
• („NP-schwierig“ → Komplexitätstheorie, letztes Kapitel dieser
mit Bearbeitungszeiten
Vorlesung)
• wir zeigen nun, dass man das Minimum von FT(S) aber bis auf den
P1
Faktor 2 approximieren kann
• wir nehmen an, dass die Jobs so schnell entstehen, dass keiner der
Prozessoren vorher arbeitslos („idle“) wird
• Strategie: ordne den nächsten ankommenden Job dem Prozessor zu,
t1
P2
t2
P3
t3
t7
t4
t9
t6
t5
t8
bis hier sind alle Prozessoren beschäftigt
dessen bisherige Belegung ihn am wenigsten lange auslastet
• sei FTopt die Fertigstellungszeit eines optimalen Belegungsplans für
Offensichtlich gilt: FTopt ≥ max{ m1
die n Jobs
Pn
i =1 ti ,
max1≤i ≤n {ti }}
Daraus folgt:
• sei FTapprox die Fertigstellungszeit eines Belegungsplans, der durch die
obige Strategie erzielt wird
FTapprox ≤
43 / 73
n−1
n
1 X
1 X
ti + tn ≤
ti + max {ti } ≤ 2 · FTopt .
1≤i ≤n
m
m
i =1
i =1
44 / 73
Betriebssysteme
Betriebssysteme
• wir schließen diesen Abschnitt mit einer Illustration eines berühmten Deadlocks
• mit diesem (kurzen) Einblick in die Scheduling-Problematik wollen wir
jenseits der Betriebssysteme
uns hier begnügen
• bereits der Einprozessor-Fall ohne Unterbrechungen wird
• fünf Philosophen kennen nur zwei Zustände in ihrem Leben: denken oder essen
• sie sitzen an einem runden Tisch, in deren Mitte eine Schüssel mit Spaghetti
• (Bedingungen der Art, dass ein Job A beendet sein muss, bevor ein
• jeder Philosoph hat einen Teller vor sich, und zwischen je zwei Philosophen
• nebenläufige Prozesse (auf Multiprozessorsystemen oder im
• ein Philosoph kann nur essen, wenn er beide Gabeln hat
• hier wird die Gefahr des Verhungerns offensichtlich…
NP-schwierig, wenn Abhängigkeiten berücksichtigt werden müssen
steht
befindet sich eine Gabel
Job B beginnen kann)
Time-Sharing auf Einprozessorsystemen) können zu korrupten Daten
führen, wenn nicht gewisse „kritische Bereiche“ nur exklusiv betreten
werden können
• Verklemmungen („Deadlocks”), d.h. permanente Blockaden für gewisse
Prozesse, von denen jeder auf ein Ereignis wartet, das nur von einem
anderen dieser Prozesse ausgelöst werden kann, müssen vermieden
werden
• eine Spezialvorlesung über Betriebssysteme im Hauptstudium
beinhaltet eine Fülle von derartigem Material, das algorithmisch
interessant und anspruchsvoll ist
45 / 73
46 / 73
Betriebssysteme
Betriebssysteme
• wir wenden uns nun der Speicherverwaltung zu
Gliederung
• wir werden drei Techniken kennen lernen, die von modernen
Prozessoren und den darauf laufenden Betriebssystemen unterstützt
verwendet werden:
• Aufgaben
• Scheduling
• Paging
• Speicherverwaltung
• Segmentierung
• Buddy Systeme
47 / 73
48 / 73
Betriebssysteme
Betriebssysteme
• wir betrachten zwei benachbarte Stufen in der Speicherhierarchie, z.B.
Der Speicher eines von-Neumann-Rechners ist typischerweise hierarchisch aufgebaut:
Hauptspeicher/Hintergrundspeicher
• der Speicher wird in Seiten (pages) gleicher Größe partitioniert
CPU
Ablauf der Speicherverwaltung:
Register
• eine im Hauptspeicher nicht vorhandene Seite wird benötigt („Seitenfehler“)
• diese wird aus dem erheblich langsameren Hintergrundspeicher in einen freien
Cache
Seitenrahmen geladen
• falls der Hauptspeicher schon vollständig belegt war, muss dafür eine Seite
Hauptspeicher
ausgelagert werden
Hintergrundspeicher
Seiten
Faustregeln
S17
hjkhk
• (90,10)-Regel: 90% der Zugriffe auf Daten benötigen lediglich 10% der Daten,
S18
auf denen das Programm arbeitet
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S15
S16
S19
• Speicherzugriffe auf den Cache sind wesentlich schneller als auf den
S20
Hauptspeicher
• diese wiederum wesentlich schneller als die auf einen Hintergrundspeicher
• (eine Festplatte ist ungefähr 100 000-mal langsamer als der Hauptspeicher.)
S21
S22
S23
SPEICHER
HINTERGRUNDSPEICHER
50 / 73
49 / 73
Betriebssysteme
Betriebssysteme
online-Algorithmen
• sind Verfahren für Probleme, über die nicht alle Informationen a priori
Paging-Problem
vorliegen
• gegeben eine Folge σ = (σ1 , σ2 , . . . , σm ) von Seitenreferenzen
• lagere die Seiten so aus und ein, dass die Anzahl der Seitenfehler
• sei σ = (σ1 , σ2 , . . . , σm ) eine Folge von Anfragen („requests“)
• ein online-Algorithmus A muss die Anfrage σi sofort beantworten,
minimal wird
sobald σi eingelesen worden ist
• er hat dabei keine Kenntnis der weiteren Anfragen σi +1 , . . . , σm
• auch m ist im allgemeinen nicht bekannt
Strategie:
LFD (longest forward distance): lagere bei einem Seitenfehler eine solche
Seite aus, die am weitesten in der Zukunft nachgefragt wird.
• online-Algorithmen sind i.a. nicht kostenoptimal
• in der Regel versucht man die Lösung des besten fffline-Algorithmus zu
Satz (Belady (1966))
approximieren
Ein auf LFD basierender Algorithmus ist ein optimaler (offline-)Algorithmus
für das Paging-Problem.
• die Bewertung der Güte von online-Algorithmen erfolgt im Vergleich mit
den Kosten eines besten Offline-Algorithmus für beliebige
Anfragefolgen (bei vollständiger Information)
51 / 73
52 / 73
Betriebssysteme
Betriebssysteme
online-Algorithmen für das Paging-Problem entscheiden bei einem
Seitenfehler zum Zeitpunkt t allein aufgrund von σ1 , σ2 , . . . , σt , welche Seite
entfernt werden soll.
• bezeichne CA (σ) die Kosten der Lösung eines online-Algorithmus A
zur Verarbeitung der Eingabefolge σ
• bezeichne COPT (σ) die Kosten der Lösung eines optimalen
• LIFO: entferne bei einem Seitenfehler die zuletzt geladene Seite
• FIFO: entferne bei einem Seitenfehler die zuerst geladene Seite
• LRU (least recently used): entferne bei einem Seitenfehler die Seite,
offline-Algorithmus OPT auf σ
• ein online-Algorithmus A ist c-kompetitiv, falls für alle Eingabefolgen
σ gilt:
auf die am längsten nicht mehr zugegriffen worden ist
CA (σ) ≤ c · COPT (σ) + a für eine Konstante a.
• LFU (least frequently used): entferne bei einem Seitenfehler die Seite,
auf die am seltensten zugegriffen wurde
• FWF (flush when full): lösche bei einem Seitenfehler den gesamten
• (beim Multiprozessor-Scheduling haben wir kürzlich bereits einen
Speicher
2-kompetitiven online-Algorithmus kennen gelernt)
53 / 73
54 / 73
Betriebssysteme
1
S1
1
2
S11
0
3
S2
0
4
S9
0
5
S7
0
6
S10
0
7
S3
00
Betriebssysteme
Analyseergebnisse
Flush
When
Full
kjkdfl
• LIFO, FWF und LFU sind nicht c-kompetitiv für beliebiges c > 0
• LRU und FIFO sind k -kompetitiv, wenn k die Anzahl der
Seitenrahmen im Hauptspeicher bezeichnet
• kann man den Faktor k schlagen?
• nein, denn es gilt:
55 / 73
56 / 73
Betriebssysteme
Betriebssysteme
Satz
Sei A ein online-Algorithmus für das Paging-Problem. Wenn
A c-kompetitiv ist, so gilt c ≥ k .
Segementierung
• beim Paging ist der Speicher in gleichgroße Seiten (pages) aufgeteilt
• dagegen sind bei der Segmentierung die Daten gemäß ihres
Beweis:
logischen Zusammenhangs in Segmente (von i.d.R. unterschiedlicher
Größe) zusammengefasst
• sei S = {p1 , . . . , pk +1 } eine Folge von Seiten
• sei A ein beliebiger online-Algorithmus und OPT ein optimaler
• jedes Segment besitzt einen Namen und eine Länge
• Adressen bestehen aus Segmentnamen und dem Offset innerhalb
offline-Algorithmus
• betrachte die Anfragefolge, die jeweils diejenige Seite anfordert, die
des Segments
A nicht im Hauptspeicher hat
• bei Numerierung der Segmente besteht eine (logische) Adresse eines
• d.h. A macht bei jeder Anfrage einen Seitenfehler
• OPT habe einen Seitenfehler bei Anfrage σt
Datums aus einem geordnetem Paar (Segmentnummer,Offset)
• das Betriebssystem lädt die für die Prozess benötigten Segmente in
• beim Bedienen von σt kann OPT eine Seite auslagern, die während
den Hauptspeicher
der nächsten k − 1 Anfragen σt +1 , . . . , σt +k −1 nicht nachgefragt wird
• somit macht OPT für je k aufeinanderfolgende Anfragen höchstens
einen Fehler.
58 / 73
57 / 73
Betriebssysteme
Betriebssysteme
• wenn ein neues Segment im Hauptspeicher abgelegt werden soll, gilt
es, eine Lücke zu finden, die mindestens so groß wie das abzulegende
Segment ist
• wenn der Hauptspeicher nicht gross genug ist:
• einzelne Segmente werden bei Anfrage in den Hauptspeicher
geladen, andere werden dazu ausgelagert
• zur Auswahl der Lücke gibt es u.a. folgende Strategien:
• First Fit (FF): lege das Segment in die erste passende Lücke ab
• Best Fit (BF): platziere das Segment in die kleinste passende
Lücke
• Resultat: der Hauptspeicher ist mit Segmenten und Lücken belegt
• benachbarte Lücken sollten zu einer großen vereinigt werden
• Worst Fit (WF): platziere das Segment in die größte passende
Lücke
• dazu muss das Betriebssystem eine Liste der Segmente und Lücken
mit den zugehörigen Größen verwalten
• Rotating First Fit (RFF): wie FF, jedoch wird für das nächste
Segment vom Ende der Lücke, in die das letzte Segment gelegt
wurde, aus die nächste passende Lücke gesucht
59 / 73
60 / 73
Betriebssysteme
Betriebssysteme
Beispiel, in dem das BF versagt:
Speicherfüllung:
Analyseergebnisse
• Nachteil von FF: ws entstehen viele kleine Lücken am Speicheranfang
90
und das führt zu einem hohen Speicherverlust
50
• Nachteil von BF: die nach Platzierung verbleibenden Restlücken sind oft
zu klein für eine spätere Nutzung, so dass viele unbrauchbare kleine
Lücken entstehen
füge folgende Segmente in der angegebenen Reihenfolge ein:
• eine Simulation ergibt die folgende Relation zwischen den Strategien
40
(„S1 > S2“ bedeutet „S1 ist besser als S2“):
RFF > FF > BF > WF
45
50
• BF fügt erst 40 in 50er Lücke ein, danach 45 in 90er Lücke, danach ist
• für jede der Strategien lassen sich Beispiele konstruieren, für die sie
kein Platz mehr für 50
optimal bzw. sehr schlecht sind
• FF und RFF dagegen können das Einfügen der drei Segmente ohne
Probleme lösen, wenn sie bei der 1. Lücke beginnen
• von der 2. Lücke aus gestartet versagen FF und RFF ebenfalls
62 / 73
61 / 73
Betriebssysteme
Betriebssysteme
Buddy-Systeme
• (Buddy = Kumpel) sind ein Kompromiss zwischen Paging und
Segmentierung
• ist Lk 6= ∅, so platziere das Segment in einen freien Speicherbereich
• sie erzeugen weniger Speicherverschnitt als die Segmentierung und
und lösche diesen aus Lk
sind weniger starr als Paging
• ist Lk = ∅, so suche bei Lk +1 beginnend, falls nötig in Lk +2 , u.s.w.,
solange, bis ein freier Speicherbereich gefunden ist
• zerlege diesen durch Halbieren solange, bis eine freie Stelle der
• der physikalische Speicher habe die Größe 2n
• Speicheranforderungen seien nur in Zweierpotenz-Größen erlaubt
gewünschten Größe gefunden ist, in die das Segment dann eingefügt
wird
• bei einer Anforderung wird der Speicher solange in kleinere
• füge die restlichen durch Halbieren erzeugten freien Zweierpotenzen in
Zweierpotenzen zerlegt, bis die gewünschte Größe verfügbar ist
die entprechenden Listen ein
• zu jeder Zweierpotenz k gibt es eine Liste Lk , in der der freie Speicher
der Länge 2k vermerkt ist
• soll ein Segment der Größe 2k gespeichert werden, so wird in
Lk nachgesehen, ob freier Speicher der gewünschten Länge
vorhanden ist
63 / 73
64 / 73
Betriebssysteme
Betriebssysteme
Beispiel: n = 8. Füge ein Segment der Größe 26 in den ursprünglich leeren
Speicher ein.
00000
11111
11111
00000
00000
11111
00000
11111
00000
11111
00000
11111
00000
11111
00000
11111
11111
00000
00000
11111
00000
11111
00000
11111
00000
11111
00000
11111
28
2
000
111
111
000
000
111
000
111
000
111
000
111
000
111
000
111
000
111
7
• wird ein Segment der Größe 2k freigegeben, so prüfe, ob der
zugehörige Buddy mit demselben Vater auch frei ist
• falls ja, vereinige sie zu einem freien Speicherbereich der Größe 2k +1
• und iteriere solange, bis keine Buddies mehr vereinigt werden können
26
freier Speicher
belegter Speicher
splitten in Buddies
65 / 73
66 / 73
Betriebssysteme
Betriebssysteme
benachbarte freie Buddies können nicht immer zusammengefasst werden,
z.B.
• sei der Speicheradressbereich das Intervall [0, 2 ]
• in Binärdarstellung: [00 . . . 0, 11 . . . 1] mit n-Bit langen
n−1
0
Speicheradressen
00
• durch die hierachische Teilung umfasst ein Speicherbereichs der Länge
01
2k im Buddy-System ein Intervall
. . 1}]
[α 0
. . 0}, α 1
| .{z
| .{z
k Bits
000
001
010
011
k Bits
• der (n − k )-Bit lange Präfix α repräsentiert den zugehörigen
lassen sich nicht zusammenfassen !
Speicherbereich
• der Buddy α der Länge 2k wird in zwei Buddies α0 und α1 der
• Zerlegung oder Wiedervereinigung zweier Buddies erfolgt in Zeit O(1)
• deshalb erlauben Buddysysteme eine sehr schnelle Speicherverwaltung
• bei Freigabe der Buddies α0 und α1 werden diese zum Buddy
• sie bieten deutlich mehr Flexibilität, unterschiedlich große
Länge 2k −1 zerlegt
Speicheranforderungen zu bedienen, als Pagingverfahren
α wiedervereinigt
• da die Speicherzuteilung immer in Zweierpotenzen erfolgt, wird jedoch
Speicherplatz verschwendet
67 / 73
68 / 73
Betriebssysteme
Betriebssysteme
Analyse
• sei die Gesamtspeicherplatzgröße 2n
• Modellannahme: alle 2n möglichen Speichergrößen s (1 ≤ s ≤ 2n )
werden mit Wahrscheinlichkeit p(s) =
1
2n
• bei Buddy-Systemen:
• werden s Speicherplätzen angefordert
angefordert
• so wird ein Buddy der Größe 2dlog2 (s)e bereitgestellt
• (Gleichverteilungsmodell: dieses ist in der Regel nicht realistisch, ein
realistisches Modell hängt von der jeweiligen Anwendung ab)
Anfragen :
Reservierung :
• dann gilt für die mittlere tatsächliche Speicherplatzanforderung Sa in
diesem Modell:
=
2
X
s · p(s) =
2
1 X
s
n
2
1 ∗ 20
1 ∗ 21
3
4
4
4
| {z }
2 ∗ 22
5
8
|
6
8
{z
7
8
4 ∗ 23
8
8
}
9
16
...
...
. . . 2n
. . . 2n
| {z }
2n−1 ∗ 2n
• d.h. für 2i −1 aufeinanderfolgende verschiedene Speicherplatzanforderungen
stellen Buddysysteme effektiv jeweils 2i Speicherplätze bereit
s=1
s=1
=
2
2
n
n
Sa
1
1
1 2n · (2n + 1)
1
·
= 2n−1 + ≈ 2n−1
2n
2
2
69 / 73
70 / 73
Betriebssysteme
Betriebssysteme
Sb bezeichne die mittlere tatsächliche Speicherplatzbelegung durch das
Buddy-System im Modell. Dann gilt:
n
Sb =
2
X
s=1
2dlog2 (s)e · p(s)
"
X i i +1
1
1
+
2 ·2
2n
i =0
"
#
n−1
X
1
2i
= n 1+2
2
2
i =0
»
–
1
22n − 1
= n 1+2 2
2
2 −1
n−1
somit beträgt die mittlere Speicherplatzausnutzung:
#
Sa
=
Sb
=
=
2n+1 −
1
+
2n
3
1
2n−1
≈
1
3
2n−1
3
=
4
· 2n+1
d.h. 75% des reservierten Speicherplatzes werden im Mittel tatsächlich
(geometrische Reihe)
belegt.
1 n+1
·2
3
71 / 73
72 / 73
Betriebssysteme
• soweit der kurze Einblick in das Kapitel Betriebssysteme
• viele wichtige Themen habe wir gar nicht angesprochen:
• Vermeidung von Deadlocks
• Synchronistaion
• Dateiorganisationen
• Benutzerverwaltung
• Sicherheitsmechanismen
• …
• Details werden in der Spezialvorlesung über Betriebsysteme
besprochen
73 / 73