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