Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. Zusammenfassung Betriebssysteme 1. Einführung 1.1 Aufgabenbereiche eines Betriebssystems Grobe Aufteilung: Bereitstellung von Hilfsmitteln für Benutzerprogramme Vernachlässigung der genauen Benutzerkenntnis von HWEigenschaften und spezieller SWKomponenten, wie z.B. Gerätetreiber Koordination und Vergabe der zur Verfügung stehenden Betriebsmittel an mehrere, gleichzeitig arbeitende Benutzer Einzelaufgaben: Unterbrechungsverarbeitung, Verteilung (Prozessumschaltung), Betriebsmittelverwaltung, Programmallokation, Dateiverwaltung, Auftragsteuerung (Scheduling), Zuverlässigkeit 1.2 Geschichte der Betriebssysteme Schlüsseltechniken: Multiprogramming (mehrere Applikationen im Speicher), Hardwarespeicherschutz Time Sharing (1962, MIT) Spooling (Simultaneous Peripheral Operation On Line) Virtualisierung 1.3 Unterschiedliche Arten von Betriebssystemen Eigenschaft Netzwerk-BS Verteiltes BS Verhalten wie eine virtuelle CPU? Gleiches BS für alle Knoten? Nein Ja Multiprozessor Ja Nein Ja Ja Anzahl Kopien des BS Realisierung der Kommunikation? Gemeinsame Netzwerkprotokolle Nur eine Prozesswarteschlange? n n 1 Gemeinsame Dateien Ja Nachrichten Ja Gemeinsamer Speicher Nein Nein Nein Ja Verteilte Betriebssysteme: Netzwerk von Rechnern, bleiben dem Benutzer verborgen, Betriebssystem bestimmt, wo Programme ausgeführt werden und wo die benötigten Daten liegen, Benutzer hat den Eindruck einer einheitlichen Computerressource Anwendungsgebiete: PCs, Echtzeit-Systeme, eingebettete Systeme und PDAs, Chipkarten 1.4 Strukturen der Betriebssysteme Monolithische Systeme Alle Funktionen werden zu einem Objektcode kompiliert, jede Funktion kann jede andere Funktion aufrufen Geschichtete Systeme Verallgemeinerung des Strukturmodells für monolithische BS, nur Funktionen der nächsthöheren Schicht aufrufbar Virtuelle Maschinen Tatsächliche Ausführung von Systemaufrufen auf der realen HW durch Monitor auf HW-Ebene Exokern Jeder Benutzer bekommt eine Kopie des darunter liegenden Computers, aber mit jeweils einem (statisch festgelegten) Teil der Ressourcen Client-Server-Systeme mit Mikrokern Kommunikation zwischen Funktionen im Kern und Benutzerraum nach Client-ServerModell durch Nachrichten Mechanismus: Wie wird eine Aufgabe prinzipiell gelöst? Policy: Was wird dabei konkret realisiert? Wünschenswert: Genereller Mechanismus, so dass eine Veränderung der Policies durch Anpassung von Parametern umgesetzt werden kann 1 ! Zusätzliche Übergänge " Swap-Out: der Prozess (blockiert, bereit) wird ausgelagert bzw. Hauptspeicher wird erst gar nicht zugeteilt " Swap-In: Der Prozess wird aus dem sekundären Speicher in den Hauptspeicher übertragen Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann O. Kao Betriebssysteme 2-15 Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. Erweitertes Zustandsmodell Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. (Grafische Darstellung) Prozess Umschalten 1.5 Fallstudie: Aufbau von Windows NT/2000 Initiiert Add Bereit Resign Laufend verwendete Modelle: Assign Retire (halbwegs) Client/Server Modell für die BeRe ad y reitstellung verschiedener BetriebssystemumSwap-out Swap-in Beendet gebungen und Anwendungsprogramme Blockiert Bereit Objektmodell für Resourcen (Zugriff über Suspendiert Swap-out Swap-in Handles) Blockiert Prozess Prozess Symmetrisches Multiprocessingmit gemeinsa- unterscheiden • Die meisten Prozessoren aus Sicherheitsgründen Suspendiert Erzeugen Beenden mem Speicherzugriff zwischen O. Kao Block Moduswechsel (Mode Switching) Betriebssysteme 2-16 ! Systemmodus (Kernmodus): Das BS besitzt die CPU und hat 2.3 Grundoperationen mit Prozessen 1.6 Fallstudie: Aufbau von Linux uneingeschränkten Zugriff auf alle Ressourcen unterzugeordnet, UNIX: Systemaufruf ist Schichtenbasiertes System ! Benutzermodus: Prozessor istProzesserzeugung einer Anwendung fork(), Kindprozess ruft Monolithischer Kern mit Modulen kritische Zugriffe können gesteuert/gesperrt werdenexecve() auf, um das Speicherabbild zu wechseln Kernaufgaben: Prozessverwaltung, Speicher! Aktueller Modus wird im Programmstatuswort festgehalten ˜ unter Windows : Systemaufruf ist verwaltung, Dateisystem, Ein-und Ausgabe, CreateProcess() Systemaufrufschnittstelle, . . . Vaterprozess und Kindprozesse bilden unter UNIX eine Familie, d. h. Signale werden an alle Prozesse 2. Prozesse in der Familie verteilt und jeder Prozess entscheidet 2.1 Prozesse als zentrales Konzept über Annahme und Verwertung Definiert durch Adressraum, Programm, Akti” vitätsträger“ (bspw. Thread) Dispatcher: BS-Komponente zur Verwaltung des realen Prozessors, verdrängt Prozesse und lädt neuO. Kao er Zusammenarbeit mit dem Scheduler, der für die Auswahl des nächsten Prozesses zuständig ist Prozessumschaltung: Sicherung des alten Kontextes, Aktualisierung des PCBs und Einordnung in Warteschlange, Laden des Kontextes des neuen Prozesses, Aktualisierung des PCBs und der Speicherinformationen, Aktualisierung des Kontextes Betriebssysteme 2-29 durch Anpassung aller Verknüpfungen Umschalttechniken: direkter Sprung (Einprogrammierung im Quellcode, z. B. bei Echtzeitsystemen), automatisches Umschalten Moduswechsel Leerlaufprozess zur einfachen behandlung des Falls, (Mode Switching) in dem alle Prozesse im ready-Zustand sind Prozesskontrollblock: (PCB), Datenstruktur, enthält: PID, Zustandsinformationen (Registerwerte, Befehlszähler, Programmstatuswort), Kontrollinformationen (laufend, blockiert, . . . , Eltern-Kind-Relationen, . . . ) • Übergang Benutzermodus → Effiziente Organisation: Aufspaltung in Teil- (verSystemmodus z.B. durch kettete) Listen mit identischen Attributen (z. B. Unterbrechung laufend, blockiert) ! Sicherung des Kontextes des laufenden Prozesses, vor allem 2.2 Ausführung von Prozessen der Informationen, die durch Multiprogrammierung: Annahme: Ein Prozess vereine Unterbrechungsbringt Anteil p seiner Zeit mit Warten auf E/Abehandlung verändert werden Operationen. können Wkt., dass n Prozesse gleichzeitig am Warten auf Sprung zum Anfang der E/A-Operationen ! sind UnterbrechungsbehandlungsWenn Ausnutzung der CPU 1 − pn , dann ist n der routine Grad der Multiprogrammierung ! Änderung des Systemmodus 2 ! Nach Behandlung der Unterbrechung wird unter Umständen wieder der alte Prozess ausgeführt (Bei Prozesswechsel kommt immer ein neuer Prozess zur Ausführung!) pthread_attr_t attr; for (i=1;i<=upper;i++ pthread_attr_init(&attr); sum += i; /* Aktuelle Attribute */ } pthread_create(&handle, &attr, pthread_exit(NULL); /* runner, argv[1]);von /* Erzeuge Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung Florian Schoppmann beendet sich und überg Thread */ Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Kontrolle an das Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. pthread_join(&handle, NULL); /* Hauptprogramm */ Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. Warte bis Thread fertig */ Systemmodus ↔ Benutzermodus, Speicherung printf(“sum=%d\n“,sum); im 2.5 Beispiel für} Threadbibliotheken: Programmstatuswort Pthreads O. Kao Betriebssysteme pthread create pthread exit 2.4 Thread-Modell pthread join pthread cancel Thread: Keine vollständige Prozesstabelle, selber pthread detach virtuelle und reale Adressraum wie der Prozess, pthread setcancel • Solaris 2 unterstützt KL- und UL-Threads, symmetrische entspricht einem separaten Kontrollfluss pthread mutex initEchtzeitscheduling (Pthread API) Multiprozessoren (SMP) und pthread mutex lock • Erweiterung: Leichtgewichtsprozesse (LWP) als Zwischenstufe Threadtabelle: enthält: separaten Befehlszähler, eiSingle- vs. Multi-Threaded pthread mutex trylock zwischen ULund KL-Threads genen Code-und Datenteil, Register und Stapel Prozessmodell ! Zuordnung UL-Threads Pool von LWPs (many-to-many) pthread mutexzum unlock (vollständige Verknüpfungsumgebung), Zustand ! Jeder LWP ist einem KL-Thread zugeordnet (one-to-one) Single- vs. Multi-Threaded pthread mutex destroy Prozessmodell Übersicht Prozessmodelle: ! Sind n UL-Threads einem LWP zugeordnet, dann sind n-1 inaktiv (b Threadbibliothek in Solaris 2 • Zur Prozessausführung benötigte Daten Single Threaded Programm Statische Daten Dynamische Daten Laufzeitkeller Niedrige Adresse Multi Threaded • Zur Prozessausführung benötigte Daten Single Threaded Programm Statische Daten Dynamische Daten Laufzeitkeller Niedrige Adresse Multi Threaded Programm Hohe Adresse Statische Daten Dynamische Daten Stapel Stapel 1 n Statische Daten Adressraum Stapel PCB Stapel Thread Thread Thread CB Thread CB Stapel Stapel 1 Thread Adressraum Thread CB PCB Stapel n Thread … wartend für LWP) und nur 1 UL-Thread aktuell rechnend (oder bere Thread CB Beispiel für Realisierung in Solaris: Stapel Multi Threaded Single Threaded O. Kao Adressraum Dynamische Daten • Komponenten • Komponenten Adressraum Programm Hohe Adresse Betriebssysteme 2-35 Realisierung von Multithreading Vorteile durch Threads: Besseres Antwortverhalten (insb. bei GUIs), effiziente Betriebsmittelteilung, Realisierung von Threadgünstiger als Prozesserzeugung, ParalleMultithreading lität PCB PCB Stapel … Stapel Multi Threaded Single Threaded O. Kao Betriebssysteme • Verarbeitung startet üblicherweise mit einem einzigen Thread 2-35 ! Thread_create(): dynamische Erzeugung weiterer Threads " Funktionsparameter: auszuführende Prozedur und Startparameter " Rückgabewert: Threadidentifikator ! Thread_yield(): Freiwillige Abgabe der CPU " Kein Uhr-Interrupt vorhanden ! Für die Aufteilung der Rechenzeit zwischen der Threads ist der Entwickler zuständig • Verarbeitung startet üblicherweise mit einem einzigen Thread ! Thread_create(): dynamische Erzeugung weiterer Threads " Funktionsparameter: auszuführende Prozedur und Startparameter " Rückgabewert: Threadidentifikator ! Thread_yield(): Freiwillige Abgabe der CPU ! Synchronisationsaufrufe wie thread_wait() legen eine Ausführungsreihenfolge fest ! Thread_exit() beendet einzelne Threads • Wichtig Kernel-Level-Threads ↔ User-Level-Threads " Kein Uhr-Interrupt vorhanden ! Für die Aufteilung der Rechenzeit zwischen der Threads ist der Entwickler zuständig ! Synchronisationsaufrufe wie thread_wait() legen eine Ausführungsreihenfolge fest ! Thread_exit() beendet einzelne Threads ! Threads operieren im selben Adressraum ! kein Schutz durch das BS ! Konzepte wie fork() oder der Umgang mit gemeinsamen Datenstrukturen können zu Problemen führen ! Sorgfältiges und durchdachtes Design notwendig O. Kao Betriebssysteme 2-36 Umschaltung bei User-Level-Threads: ohne Prozesskontextwechsel, keine Leerung des Caches, effizient, eigenes Scheduling −→ Anpassbar an spezielle Scheduling-Bedürfnisse Bei Anforderung eines Betriebssmittels: if Thread muss blockiert werden then Speicherung der Daten in der Threadtabelle if Anderer Thread ist ausführbar then Auswahl dieses Threads else Blockierender Systemaufruf end if else BM wird zur Verfügung gestellt end if • Wichtig ! Threads operieren im selben Adressraum ! kein Schutz durch das BS ! Konzepte wie fork() oder der Umgang mit gemeinsamen Datenstrukturen können zu Problemen führen ! Sorgfältiges und durchdachtes Design notwendig O. Kao Betriebssysteme O. Kao Betriebssysteme 2-36 Nachteile von User-level-Threads: Bei Seitenfehler wird gesamter Prozess blockiert Hybride Threadmodelle: UL-Threads benötigen mind. eines KL-Thread als Träger, Rechenzeit wird einzelnen Prozessen zugeordnet many-to-one (nicht geeignet für Parallelrechner), one-to-one (Aufwand bei Threaderzeugung), manyto-many (flexibel, Kompromiss) 2.6 Zuteilungsverfahren Typen von Zuteilungsverfahren: Long-term, z. B. Start eines neuen Prozesses (wie viele Prozesse sollen nebeneinander laufen?), Medium-term, z. B. Erstzuweisung von Hauptspeicher (welcher Prozess wird als nächstes ein-/ausgelagert?), Short-term, z. B. Zustandswechsel des Prozesses (Verwaltung von Ereignissen wie Timer, Systemaufrufen) Schlüsselfaktoren für Scheduling: Länge der CPUNutzung in einem Zyklus, Verwaltungsoverheadfür E/A z. B. bei Festplatten unabhängig von der Größe der gelesenen Daten, Schere zwischen Geschwindigkeiten von E/A-Geräten und Prozessorgeschwindigkeit engeht immer weiter auf (−→ Scheduling von E/A-lastigen Prozessen entscheidend für die Effizienz des Gesamtsystems) Scheduling-Verfahren: FIFO, LCFS-PR, SJN, SRTN, PRIO-NP, Round-Robin (siehe KMS) Multilevel-Feedback-Scheduling: dynamische Anpassung der Zeitscheibenlänge, Stufenweise Prioritätenreduktion für lang laufende Prozesse 3 Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Darüber hinausMultilevel-Feedbackbin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. Scheduling Zugang Warteschlange 1 Abgang Zeitscheibe 8 ms CPU Hohe Priorität 3.2 Seitenersetzungsstrategien Nachschubstrategien: Demand Paging, Pre-Paging Zugang Zugang Zugang Warteschlange 2 Abgang Zeitscheibe 16 ms Warteschlange 3 Abgang Zeitscheibe 32 ms CPU Warteschlange n FCFS CPU O. Kao Verdrängungsstrategien (Replacement Policies): Probleme bei Realisierung durch aufwendige Operationen CPU Abgang Geringe Priorität Betriebssysteme 2-59 2.7 Prozesse und Scheduling in Linux Schedulingbeispiel: Solaris 2 Grundprinzipien: Threads über Biliotheken (ohne • Vier Klassen für prioritätenbasierten Scheduling vorhanden Kernelunterstützung), PCBs in doppelt verketteter ! Echtzeit, System, Zeitscheiben (Time Sharing) und Interaktiv ! Jede Klasse kann über unterschiedliche Schedulingpolicies Liste + Hash-Liste von PID −→ PCB und Prioritäten verfügen ! Klasse Zeitscheiben wird nach Multilevel-Feedback verwaltet Prozesszustände: ! Klasse Interaktiv benutzt die gleiche Policy wie Zeitscheiben, gewährt Anwendungen mitTASK GUI-Ausgabe höhere Prioritäten TASK aber RUNNING, INTERRUPTIBLE (durch ! Klasse System umfasst Prozesse, die in Kernmodus laufen, z.B. der usleep(), TASK UNINTERRUPTIBLE (durch E/AScheduler und der Paging Daemon " Keine Zeitscheiben ! Prozesse laufen,beendet, bis sie blockieren, die CPU ZOMBIE (Prozess VaterproAufruf), TASK freiwillig abgeben oder bis Prozesse höherer Priorität da sind zess muss Ergebnis noch " Prioritäten ändern sich nicht abrufen), TASK STOPPED ! Echtzeitprozesse haben die höchste Priorität aller Klassen (Prozess wurde angehalten, z. B. durch kill • Konvertierung der Klassenprioritäten in globale Prioritäten durch BS -STOP PID) • Bei mehrerer Prozessen gleicher Priorität wird nach Round-Robin vorgegangen Multilevel-Feedback-Scheduling: RR/FIFO für O. Kao Betriebssysteme 2-60 Echtzeitprozesse, auf PRIO-P Strategie basierendes Verfahren für normale“ Prozesse ” 2.8 Prozesse und Scheduling in Windows Hierarchie: Jobs → Processes → Threads → Fibers (kooperative lightweight“ Threads, deren Schedu” ling nicht vom Betriebssystem vorgenommen wird) Working Set: Menge Wi (t, τ ) von Seiten, auf die ein Prozess i in den letzten τ Einheiten ab dem Zeitpunkt t zugegriffen hat. Realisierung: Jeder Eintrag in der Seitentabelle enthält mind. Referenzbi, Modifikationsbit und ungefähre Zeite des letzten Zugriffs WSClock-Algorithmus: Modifikation des ClockAlgorithmus 3.3 Speicherverwaltung unter Linux Virtuelle Speicherbereiche: Grafikspeicher oder (memory-mapped) Dateien werden in den Adressraum eingeblendet Gemeinsam genutzter Speicher mit copy-on-write Speicherbereinigung: Aufruf von kswapd alle 1 s oder bei Bedarf. Beachtung minimaler Verweildauer im Speicher zur Vermeidung von Thrashing Speicherverwaltung 3.4Physische Speicherverwaltung unter Windows (Grafische Darstellung) Arbeitet mit Working-Sets: System-Priorität für Threads ergibt sich aus Win32-Prozesspriorität und Win32Threadpriorität Scheduling: Prioritätenliste mit 32 Prioritäten, RR für jede Prioritätsstufe Verbesserungen: Prioritätserhöhung nach Beendigung einer E/A-Operation, temporäre Deaktivierung des Schedulings, wenn Systemthread in kritischem Bereich 3. Speicherverwaltung 3.1 Grundlegendes Dynamische Speicherallokation, Zugriff auf einen fehlenden Inhalt löst Interrupt aus 4 O. Kao Betriebssysteme 3-31 3.5 Leistungsaspekte des virtuellen SpeiPhysische Speicherverwaltung: chers Hintergrundprozesse WSClock bietet den besten Kompromiss zwischen • Swapper-Thread läuft alle 4 Sekunden und sucht alle Prozesse, effizienter Implementierung und guter Leistung deren Threads für eine bestimmte Zeitspanne im Leerlauf waren ! Prozess gefunden ! Auflösung des Stapels, Prozessseiten werden auf Modellierung des Seitentausches (3-34): Was soll Standby oder Modified List geschoben das denn? • Mapped-Page-Writer/Modified-Page-Writer (Hintergrundthreads) ! Periodische Prozesse, die nachsehen, ob genügend freie Seiten vorhanden sind ! Keine freie Seiten ! Seiten von der Spitze der Modified list holen, zurück auf die Festplatte schreiben, verschieben in Standby list • Lagert ein eine Seite aus ! Seite wird in Free list verschoben, es sei denn, diese wird mit anderen Prozessen geteilt Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. Thrashing: Überlastphänomen, ähnlich Stau im Straßenverkehr. Der Koordinationsaufwand wächst überproportional an. Zur Verhinderung des Thrashing muss der Multiprogramminggrad nmax begrenzt werden: indirekte Strategie Für jeden Prozess wird individuell eine sinnvolle Kachelanzahl festgestelt, und der Multiprogramminggrad begrenzt direkte Strategie Anhand von Messungen der globalen Seitentauschaktivität wird ein optimaler Wert für nmax berechnet, bspw. max. Prozessanzahl so bestimmen, dass die durchschnittliche Zeit zwischen Seitenfehlern nicht größer ist als die Seitentransferzeit Konzepte: Syncrhone ↔ asynchrone Übertragungen, Pufferung, gemeinsame/exklusive Nutzung Paging Deamon: Technik zur Sicherung eines ausreichenden Vorrats an freien Kacheln für schnelle Reaktion auf weitere Speicheranforderungen 4. Interruptcontroller informieren und Behandlung weiterer Unterbrechungen veranlassen 4. Ein- und Ausgabe 6. Aufruf der Unterbrechungsroutine (Informationen aus den E/A-Geräten auslesen und notwendige Operationen durchführen) 4.1 Klassifikation und Grundaufgaben Klassifikation: Zeichenorientierte Geräte: Nicht adressierbar, keine Suchoperation. Beispiele: Tastur, Maus, Netzwerkkarten Blockorientierte Geräte: Ein Block kann unabhängig von anderen Blöcken gelesen oder geschrieben werden. Beispiele: Festplatten, CD-ROMs, . . . Schichtenaufbau: Hardware → Unterbrechungsbehandlung → Gerätetreiber: Direkte Ansteuerung der spezifischen Geräte → Geräteunabhängige E/A-Systemsoftware → E/A-Software in Anwendungen: Systemaufrufe für die E/A Unterbrechungsbehandlung: 1. Sicherung aller Register 2. Erzeugen des Kontextes für die Unterbrechungsroutine 3. Initialisierung von MMU, TLB, Speichertabellen, . . . und Anlegen neuer Speicherbereiche 5. Kopieren der gesicherten Register in die Prozesstabelle 7. Auswahl des nächsten auszuführenden Prozesses 8. Initialisierung/Wiederherstellung des Kontextes, Laden der Prozessregister 9. Verarbeitung mit neuem Prozess fortsetzen 4.3 Gerätetreiber Abstrakte Geräte zur Repräsentation in der Systemsoftware: Device Control Block, Mindestmenge von Funktionen (open/close, read/write), Gerätetreiber Grundaufgaben: Steuern des Gerätes (z. B. Lesekopf positionieren), Datentransport von CPU/Speicher zum Gerät und umgekehrt Transportauftrag: Positionierung der zu übertragenden Daten, Spezifikation der Parameter (Richtung, Länge der Daten), Rückmeldung: Status-/Fehlersignale 4.2 Schlüsselkonzepte von E/A-Software Anforderungen: Geräteunabhängigkeit, Einheitliches Benennungsschema, Fehlerbehandlung möglichst nah an der Hardware (z. B. automatische Fehlerkorrektur bei CD-ROMs) Treiber als Betriebssystem-Bestandteil/Modul ↔ Benutzerprozess (Geräteserver) Code ist reentrant, wenn er von mehreren Programmen gleichzeitig verwendet werden kann 4.4 Geräteunabhängige E/A-Software Pufferung: Keine Pufferung, Pufferung im Benutzerraum (Nachteil: Sperrung gegen Auslagerung nötig), Pufferung im Kernraum (Nachteil: Sicherung gegen Überlauf nötig, Benachrichtigung an Benutzerprozess), Wechselpuffer Prozesskoordination (z. B. für CD-Brenner) Spooling: Simultaneous Peripheral Operations Online 5 Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. 4.5 Beispiel für blockorientierteGeräte: Festplatten Vorgehensweise Treiber blockieren nach Auftrag / Deblockieren nach Unterbrechung Fertig“ führt zu ” langen Zeiten zwischen zwei Aufträgen (Totzeit) Bedienzeit als Summe von: Armpositionierzeit, Latenzzeit (Drehwartezeit), Schreib/Lesezeit (Tatsächliche Ausführungszeit), Transferzeit Totzeitreduzierung (Latency Hiding): Überlappung der Aktivitäten Durchführung des aktuellen Auf” trags“ und Vorbereitung des nächsten Auftrags“ ” Wie genau soll das funktionieren? Low-Level- (Anlegen von Spuren, Sektoren und Lücken) ↔ High-Level-Formatierung (Anlegen eines leeren Dateisystems für jede Partition) RAIDs: (Redundant Array of Inexepensive/Independent Disks) Level: 0. Virtuelle Festplatte wird in Strips unterteilt, Parallelität beim Lesen/Schreiben eines sich über mehrere Strips erstreckenden Blocks, keine Redundanz 1. Alle Platten doppelt vorhanden 2. Aufteilung von Wörtern oder Bytes 3. Wie Level 2, jedoch Speicherung der ParityDaten auf einer Platte 4. Wie Level 2 und 3, jedoch mit (größeren) Strips, Parity-Platte als Flaschenhals beim Schreiben 5. Ähnlich Level 4, bei Verteilung der ParityStrips über alle Platten zur Eliminierung des Falschenhals 4.6 Strategien für Plattentreiber Random Abarbeitung in zufälliger Reihenfolge FIFS First Come First Serve Prioritäten Abarbeitung gemäß Prioritäten SSTF Shortest Seek Time First (Armpositionsierungszeit), Minimierung der Anzahl der Armbewegungen, Bei stark belasteten Platten tendiert der Arm zu den mittleren Sektoren SCAN Fahrstuhlstratgie, Lokalität von Anfragen nicht ausreichend berücksichtigt SCAN-C Zyklische SCAN-Strategie, da nach jedem Durchlauf Rücksprung auf Zylinder 0 4.7 Effizienzbetrachtungen FCFS: Im Mittel Überfahren von 13 der Spuren SCAN, SCAN-C, SSTF: Vorteile in Hochlastsituationen, im Grenzfall Sprung um nur eine Spur SCAN und SSTF benachteiligen die Randspuren SSTF: im Mittel die beste Leistung, Verhungern von Aufträgen möglich 6 Plattencache: unabhängig vom BetriebssystemCache 5. Dateisysteme 5.1 Organisation von Dateisystemen und Dateiattribute Eigenschaften per Definition: Persistente Speicherung großer Informationsmengen. Abstraktion der Details für die Datenablage, Gleichzeitiger Zugriff auf die Daten durch mehrere Prozesse möglich, Schutzmechanismus für den Datenzugriff Typische Strukturierung von Dateien: Folge von Bytes (Interpretation beim Einlesen durch Anwendung), Folge von Datensätzen, Hierarchisch 5.2 Zugriffsarten Sequentiell, wahlfrei (random access), Index-basiert Indexstrukturen: B-Bäume, Index-Sequential Access Method, invertierte Liste 5.3 Grundlegende Operationen für Dateiund Verzeichnisverwaltung selbsterklärend 5.4 Layout eines Dateisystems Sektor 0 einer Festplatte: Master Boot Record zur Lokalisierung der Partitionstabelle und/oder aktiven Partition Zwei-Phasen-Realisierung: 1. Abbildung Dateien → nummerierte Blöcke fester Länge 2. Abbildung Datenblöcke → Geometrie des Speichermediums 5.5 Zuordnung Dateien → Datenblöcke Einfachste Möglichkeit: Zusammenhängende Abbildung. Jedoch mit Nachteil: Fragmentierung Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann Das Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. Etwaige Inkorrektheiten sind mit sehr großer Wahrscheinlichkeit erst durch meine Zusammenfassung/Interpretation entstanden. Belegung durch verkettete Listen: interne Verkettung Jeder Block enthält Zeiger auf nächsten Block. Nachteil: Nur sequentieller Zugriff möglich, wenig robust: Ein Dateiverlust bei Zerstörung nur eines Blockes externe Verkettung Externe Allokationstabelle (File Allocation Table, FAT) Indexblöcke Jeder Datei wird ein Indexblock zugeordnet, für große Dateien mehrstufige Indexblöcke. Vorteile: Tabelle zur Speicherung der verketteten Liste aller Dateiblöcke wächst linear mit Festplattengröße, Arbeitsspeicherbedarf beim Zugriff ist ausschließlich proportional zur maximalen Anzahl gleichzeitig geöffneter Dateien 5.9 NTFS Dateisystem Optimierungen: Trennung des Dateinamens (von variabler Länge) von den übrigen Datei-/I-NodeAttributen Verwendung von Kryptografie: Symmetrische ↔ Asymmetrische Verschlüsselung, Digitale Signaturen, Hashing mit Einwegfunktionen Grundeigenschaften: Clustergröße unabhängig von Datenträgergröße, Alle Daten (auch Meta-Daten) als Dateien, Verschlüsselung, Komprimierung, mehrere Datenströme 6. Sicherheit 6.1 Grundlagen der Sicherheit Sicherheitsanforderungen: Datenvertraulichkeit, -integrität, Systemverfügbarkeit, Datenschutz 5.6 Verwaltung des Plattenspeichers 6.2 Benutzer-Authentifizierung Verwaltung freier Blöcke: Verkettete Listen (sinnvoll: Nutzung der freien Blöcke zur Speicherung) ↔ Bitmaps 5.7 Leistungsaspekte: Caching, Backup, Konsistenz, . . . Caches: Write Through, Careful write: Schreiben nach einer vorgegebenen Maximalverzögerung, Lazy write: Alles wir vorerst im Cache behalten Optimierungen: Vorauslesen von Blöcken, virtuelle Festplatten (RAM-Disks), Optimierung der Blockanordnung Konsistenzüberprüfung: Abgleich freier Blöcke vs. belegter Blöcke, Block in Freiliste vermisst/doppelt vorhanden, kritisch: Block kommt in mehreren Dateien vor 5.8 Log-basierte Dateisysteme Motivation: CPU-Geschwindigkeit wächst schneller als Festplattenzugriffszeiten. Caches werden wichtiger und damit die Behandlung von Konsistenzproblemen Optimierung: Schreiben eines temporären Logs, das später erst aufgeräumt wird, d. h. die tatsächlichen Änderungen an Dateien vorgenommen werden Authentifizierung durch: Geheimnis“ des Benut” zers, z. B. Passwort, biometrische Daten, Zusätzliche Hardware (z. B. Chipkarten, herklömmlicher Schlüssel) Passwortsicherheit in UNIX: Passwortdatei mit je einer Zeile mit Attributen und verschlüsseltem Passwort je Benutzer. Aktuelle Version: Separate Speicherung der verschlüselten Passwörter in Shadow-Datei Verbesserung der Passwortsicherheit: Verzögerungsstrategien, Verwendung schwer zu ermittelnder Passwörter, Einmal-Passwörter, ChallengeResponse-Verfahren (Erweiterung davon: SmartCards mit kleiner CPU) 6.3 Angriffe von innerhalb des Systems Login-Spoofing: Programm bildet PasswortEingabebilschirm exakt nach. Abhilfe: Bspw. Tastenkomnination, die nicht vom Benutzerprogramm abgefangen werden kann Buffer-Overflow: Überschreibung der Rücksprungsadresse durch überlange Eingaben 7 ein eingeschleustes Programm ! Bei Funktionsaufrufen wird die Rücksprungadresse und zu übergebende Parameter auf den Stapel gelegt ! Für bestimmte Parameter – z.B. einen Dateinamen – wird Speicherplatz gemäß der Definition des Strings reserviert Betriebssysteme, Prof. Dr. Odej Kao, Zusammenfassung von Florian Schoppmann ! WirdDas diese Grenze durch einen extralangen Namen überschritten, so wird Copyright für die dieser Zusammenfassung zugrunde liegenden Vorlesungsunterlagen (Skripte, Folien, etc.) liegt beim Dozenten. die Rücksprungadresse überschrieben und somit abgeändert Darüber hinaus bin ich, Florian Schoppmann, alleiniger Autor dieses Dokuments und der genannte Dozent ist in keiner Weise verantwortlich. " Etwaige Sprung Inkorrektheiten in fremden/gesperrten Adressraum ! Absturz erst durch meine Zusammenfassung/Interpretation entstanden. sind mit sehr großer Wahrscheinlichkeit " Pufferinhalt = Programm, das ausgeführt wird ! Großer Schaden 6.5 Schutzmechanismen • Einführung des Domänenkonzepts (domain) ! Domäne = Menge von Paaren (Objekt, Rechte) ! Jedes Paar spezifiziert ein eindeutig identifiziertes Objekt (HW, Prozesse, Dateien, Semaphore, …) und dieBetriebssysteme darauf ausführbaren Operationen O. Kao ! Recht = Erlaubnis zur Ausführung einer Operation ! Domäne kann einem Benutzer entsprechen, aber auch allgemeiner Natur sein ! Ein Prozess läuft zu jedem Zeitpunkt in einer einzigen Schutzdomäne ! Domänenwechsel ist möglich, die dazugehörigen Regel sind hochgradig vom aktuellen System abhängig 6.4 Angriffe von außerhalb des Systems nicht klausurrelevant • Domänenkonzept bei UNIX ! Domäne eines Prozesses wird durch BenutzerID (UID) und GruppenID 6.5 Schutzmechanismen (GID) festgelegt ! für jede Kombination (UID, GID) lässt sich eine Liste mit allen benutzbaren Objekten (HW, SW, …) erstellen ! Prozessaufteilung in Benutzer- und Kernteil, die in unterschiedlichen Domänen laufen ! Systemaufruf verursacht einen Domänenwechsel Dömane: Menge von Paaren (Objekt, Rechte), je6-21 des Paar spezifiziertO. Kao einBetriebssysteme eindeutig identifiziertes Objekt (HW, Prozesse, Dateien, Semaphore, . . . ) Realisierung des und die darauf ausführbaren Operationen Domänenkonzepts Ein Prozess läuft zu jedem Zeitpunkt in einer ein• Konzeptionell: Modellierung der Übersicht über Domänen und zigen Schutzdomäne zulässige Operationen für verschiedene Ressourcen durch eine Matrix Domänenkonzept UNIX: Festlegung durch ! Ein Objekt pro Spalte,bei eine Domäne pro Zeile ! Zellen enthalten – falls vorhanden – die zulässigen Operationen Benutzer-ID und Gruppen-ID ! Domänen sind selbst Objekte ! Modellierung des Übergangs von einer Domäne inRealisierung eine andere Domäne des Klassische Domänenkonzepts • Matrixdarstellung ineffizient, da zu viele leere Felder vorhanden ! durch Speicherung in Matrix: Speicherung nur der Spalten (ACL) oder der Zeilen (Capabilities) Domain O. Kao Betriebssysteme 6-22 Effizientere Speicherung, da in Matrix zu viele leere Felder vorhanden: Nur die Spalten (Access Control Lists – ACLs) oder der Zeilen (Capabilities) Capabilities: (C-Listen) 6.6 Firewalls bekannt 8 6-16