4.1 4.2 4.3 4.4 4.5 4.6 4.7 O. Kao Betriebssysteme Klassifikation und Grundaufgaben Schlüsselkonzepte von E/A-Software Gerätetreiber Geräteunabhängige E/A-Software Beispiel für blockorientierte Geräte: Festplatten Strategien für Plattentreiber Effizienzbetrachtungen • Überblick 4. Ein- und Ausgabe 4-1 O. Kao Betriebssysteme Eine Reihe von Geräten passt nicht in dieses Schema: Uhren, Bildschirme, … 4-2 Blockorientierte Geräte (block devices) Informationen in Blöcken fester Länger mit bekannter Startadresse Ein Block kann unabhängig von anderen Blöcken gelesen oder geschrieben werden Beispiele: Festplatten, CD-ROMS, … Erzeugen und akzeptieren Zeichenströme ohne Anforderungen an eine Blockstruktur zu stellen Nicht adressierbar, keine Suchoperationen Beispiele: Tastatur, Zeigergeräte, Zeilendrucker, Netzwerkkarten • Eine der Kernaufgaben von Betriebssystemen ist der Betrieb von Ein- und Ausgabegeräten (E/A-Geräte) Zeichenorientierte Geräte (character devices) 4.1 Klassifikation von E/A-Geräten Physische Geräte … Betriebssysteme Abstrakte Geräte Anwendungen … O. Kao … Gerätetreiber realisiert definierte Operationen, Routinen zur Behandlung von geräteabhängigen Unterbrechungen DeviceId = OpenDevice (Gerätename, Betriebsparameter) CloseDevice (DeviceId) Read/Write (DeviceId, Von, Bis | Länge) Datenstruktur DCB (Device Control Block): Anschluss- und Zustandsinformationen, z.B. Interruptnummer, Portadresse, … Mindestmenge von Funktionen • Aus Anwendungssicht soll jedes physische Gerät durch ein abstraktes Gerät in der Systemsoftware repräsentiert werden • Abstrakte Geräte besitzen Abstrakte Geräte 4-3 • Beispiele: Schreib/Lesekopf positionieren, Baudrate einstellen, Band zurückspülen/auf Schreibmarke positionieren, … Puffer Zentrale Instanz O. Kao Betriebssysteme Datentransport Auslösung Gerät 4-4 Transportauftrag erteilen (Auslösung), Datentransport Deklaration der zu übertragenden Daten: Direkt mit dem Auftrag (Gib Zeichen X aus) oder durch Spezifikation von Anfangs- und Endadresse (Gib Zeichen zwischen Adressen d_anf bis d_end aus) 2. Transportieren: Daten von der zentralen Instanz (CPU, Speicher) zum Gerät und umgekehrt kopieren 1. Steuern des Geräts wie z.B. bewegliche Teile positionieren, Betriebsparameter einstellen, … Betrieb von E/A-Geräten umfasst zwei Grundaufgaben Grundaufgaben beim Betrieb von Geräten E S Auftrag S E Gerät nal g i s g i t r Fe Zentrale O. Kao Betriebssysteme 4-5 Auftraggebende Prozesse werden bis zum Auftragsende blockiert Sobald Auftrag ausgeführt, erzeugt das Gerät eine Unterbrechung Prozessor wird unterbrochen und führt die zugehörige Unterbrechungsroutine aus Dort wird eine entsprechende Nachricht erzeugt und an den Empfangskanal des auftraggebenden Prozesses gesendet • Geräteinbindung in Prozessstrukturen Gerät: Prozessor, der genau ein Prozess ausführen kann Kein Umschalten Aktives Warten am Auftragseingang • Interaktion wird oft als Dienstleistungsbeziehung realisiert Interaktion zwischen zentraler Instanz und Gerät Richtung: Lesen oder Schreiben von Daten Quelle und Ziel der Daten Wie viele Daten werden übertragen (Länge) Ggf. Daten selbst O. Kao Betriebssysteme 4-6 Falsche Parameter (Speicheradresse, Spur- oder Blocknummer unbekannt, …) Falscher Betriebszustand (Gerät unbekannt, keine Spannung, kein Datenträger, keine Formatierung, …) Übertragungsfehler: Paritäts- oder Synchronisationsfehler Aufzeichnungsfehler 3. Rückmeldung: Auswertung der Gerätsignale bzgl. Fehler wie 2. Spezifikation der Parameter Bytes (zeichenserielle Schnittstelle), Block bestimmter Größe bei vorgegebener Gerätgeometrie wie Seitendrucker, Festplatte, … 1. Portionierung der zu übertragenden Daten Ablauf eines Transportauftrags O. Kao Betriebssysteme Realisierung von synchronen/asynchronen Übertragungen Effizienz und Zuverlässigkeit durch Pufferung Gerätekoordination (gemeinsame/exklusive Nutzung) • Weitere Konzepte Möglichst nah an der HW, z.B. erneutes Lesen eines Blocks Erst bei schwerwiegenden Fehlern obere Schichten informieren • Fehlerbehandlung Beispiel UNIX: Einbindung von Disketten/CD-ROMS/… in die Dateisystemhierarchie ⇒ Geräte werden wie Dateien und Verzeichnisse durch einen Pfadnamen identifiziert • Einheitliches Benennungsschema: Name von Dateien/Geräten sind alphanumerische Zeichenfolgen, unabhängig von der Gerätart 4-7 Systemaufrufe z.B. zum Lesen/Schreiben von Festplatte sollen so gestalten, dass keine Neuübersetzung für neuen Gerätetyp erforderlich • Geräteunabhängigkeit 4.2 Schlüsselkonzepte von E/ASoftware O. Kao Betriebssysteme E/A-Software in Anwendungen: Systemaufrufe für die E/A Durchführung der für alle E/A-Geräte notwendigen Basisfunktionen Bereitstellung einer einheitlichen Schnittstelle für Anwendungen Unterbrechungsbehandlung Gerätetreiber: Direkte Ansteuerung der spezifischen Geräte Geräteunabhängige E/A-Systemsoftware • Einzelne Schichten E/A-Software in Anwendungen Geräteunabhängige E/A-Systemsoftware Gerätetreiber Unterbrechungsbehandlung (Interrupt handler) Hardware Untere Schichten kümmern sich um die HW-Details Obere Schichten bieten einfache, einheitliche Schnittstellen an • Aufbau von E/A-Software üblicherweise in 4 Schichten Schichtenaufbau von E/ASoftware 4-8 O. Kao Betriebssysteme ⇒ Effiziente Implementierung und HW-Unterstützung notwendig 4-9 • Unterbrechungsbehandlung: nicht-triviale und zeitintensive Aufgabe Sicherung aller Register Erzeugen des Kontextes für die Unterbrechungsroutine, Initialisierung von MMU, TLB, Speichertabellen,… und Anlegen neuer Speicherbereiche (Stapel, Heap, …) Interruptcontroller informieren und Behandlung weiterer Unterbrechungen veranlassen Kopieren der gesicherten Register in die Prozesstabelle Aufruf der Unterbrechungsroutine ⇒ Informationen aus den E/AGeräten auslesen und notwendige Operationen durchführen Auswahl des nächsten auszuführenden Prozesses Initialisierung / Wiederherstellung des Kontextes, Laden der Prozessregister Verarbeitung mit neuem Prozess fortsetzen • Behandlung einer Unterbrechung erfordert folgende Schritte Unterbrechungsbehandlung • • O. Kao Betriebssysteme Durch Trennung kann u.U. die Ausfallsicherheit erhöht werden (Abstürze infolge defekter Treiber vermeiden) 4-10 Treiberentwicklung von Außenstehenden ⇒ Detaillierte, genaue Spezifikation der Treiberarchitektur notwendig Dynamische Einbindung von Treibern ohne Neukompilierung des BSKerns wünschenswert 2. Möglichkeit: Treiber sind Benutzerprozesse 1. Möglichkeit (Standard): Treiber sind Bestandteil des BS-Kerns Treiber benötigen Zugriffsmöglichkeiten auf die Rechenhardware und Geräteregister Gerätehersteller stellen Treiber für unterschiedliche BS zur Verfügung Jeder Treiber steuert einen Gerätetyp oder eine Klasse von Gerätetypen (z.B. SCSI-Platten und evtl. SCSI-CD-ROMs) Gerätetreiber fassen alle für ein Gerät spezifischen Steuersoftwareelemente in einer Komponente zusammen 4.3 Gerätetreiber (Driver) Geräte Hardware Kernadressraum Benutzeradressraum Betriebssysteme WebcamController DruckerController O. Kao Webcamtreiber Druckertreiber CD-ROM Controller CD-ROM treiber Rest des Betriebssystems Anwendung Logische Positionierung der Gerätetreiber (1. Möglichkeit) 4-11 … O. Kao Betriebssysteme … Kern … Physische Geräte Abstrakte Geräte Geräteserver Anwendungen 4-12 BS erteilt dem Geräteserver Zugriffsrecht auf physische Geräteschnittstelle Spezielle Funktion zum Aufbau der Verbindung Server ↔ Schnittstelle, Überprüfung des Zugriffrechts, Eintragen der Unterbrechungen Einblendung der Kontroll- und Statusregister des Geräts im Speicher ⇒ nach Bekanntgabe der Adresse direkter Zugriff auf das Gerät Unterbrechungen werden vom Kern in Signale an Server umgewandelt • Abstrakte Geräte in eigenständigen Adressräumen im Benutzerraum Geräteserver (2. Möglichkeit) O. Kao Betriebssysteme 4-13 Überwachung des Speicherbusses und PCI-Bridges (Gerätesteuerung) Kontroller überprüft, ob die Adresse in dem zugeordneten Bereich liegt Falls ja ⇒ Verarbeiten des Befehls Falls nein ⇒ Befehl verwerfen Bridges leiten die Befehle – analog zum Controller – auf den anderen Bus Schreib/Lesezugriffe verursachen u.U. Seitenfehler und initiieren das Nachladen der entsprechenden Dateibereiche Eingeblendete Datei wird als Ein- und Auslagerungsdatei für den Speicherbereich gekennzeichnet Registrierung von Schreib/Lesezugriffen durch • Konkrete Realisierung Ab einer bestimmten Adresse werden die Speicherworte der eingeblendeten Datei angeordnet Dateizugriffe werden durch Speicherzugriffe realisiert Bei Prozessende wird der Speicherbereich in Datei geschrieben • Dateien werden in den virtuellen Adressraum eingeblendet Memory-mapped Dateien O. Kao Betriebssysteme Memory-mapped I/O 4-14 O. Kao Betriebssysteme 4-15 Dem Treiber übermittelte Befehlssequenz wird in die Steuerregister des Geräts hineingeschrieben Nach jedem Befehl ⇒ Überprüfung der Befehlannahme und Bestimmung des Zeitpunkts für den nächsten Befehl Alternativ können mehrere Befehle gleichzeitig abgesetzt werden ⇒ Keine weiteren Aktionen durch das BS notwendig 4. Steuerung Belegt ⇒ Auftrag in Warteschlange einreihen Frei ⇒ Ggf. Initialisierung durchführen, z.B. Gerät/Motor einschalten, Anfangszustand herstellen 1. Überprüfung der Eingabeparameter 2. Bei gültigen Parametern ⇒ Umrechnung abstrakter Adressen (z.B. lineare Blockadresse bei Festplatten) zu realen Werten (Kopf-, Spur-, Sektor- und Zylindernummer) 3. Überprüfung des Belegungsstatus des Geräts Typische Ausführungsreihenfolge bei Gerätetreibern O. Kao Betriebssysteme • Vorgestellter Ablauf ist nur grobe Annäherung an reale Situationen ⇒ Komplexitätserhöhung durch Unterbrechungen und hot pluggable Geräte 4-16 Aktion wird sofort erledigt, z.B. Verschieben des Bildinhalts um eine Zeile ⇒ Schreiben von wenigen Bytes notwendig Umfangreiche – evtl. auch mechanische – Aktionen sind notwendig ⇒ Treiber blockiert und wartet auf Beendigung der Arbeit durch den Controller (Unterbrechung) Anschließend Überprüfung der Ergebnisse und Übermittlung an geräteunabhängige Schicht Übermittlung von Statusinformationen an den Aufrufer Weitere Anfragen vorhanden Ja ⇒ Bearbeite nächste Anfrage Nein ⇒ Blockiere Treiber bis zum Eintritt der nächsten Anfrage • Was passiert nach dem Absetzen der Kommandos? Ausführungsreihenfolge bei Gerätetreibern (2) O. Kao Betriebssysteme 4-17 Der Code wird so konzipiert, dass er von mehreren Programmen zur gleichen Zeit gemeinsam verwendet werden kann Führt ein Programm reentranten Code aus, darf es von einem anderen Programm unterbrochen werden, das daraufhin denselben Code fortführen oder von Beginn ausführen kann Reentrante BS-Funktionen ⇒ eine Kopie im Speicher notwendig, um alle ausgeführten Programme bedienen zu können • E/A-Gerät beendet die Arbeit und unterbricht den laufenden Treiber, evtl. sogar den für die Steuerung des Geräts zuständigen Treiber • Beispiel: Netzwerktreiber bearbeitet ein Paket und ein neues Paket ist angekommen ⇒Forderung nach wiedereintrittsfähigem (reentrantem) Code • Definition reentranter/wiedereintrittsfähiger Code Unterbrechung von Treibern Dynamische Registrierung neu ankommender Geräte Umschichtung von Ressourcen, z.B. Unterbrechungsleitungen Einrichtung der notwendigen Datenstrukturen Aktualisierung der Ressourcenanzeigen, … O. Kao Betriebssysteme • Plug-and-Play: automatische Gerätekonfiguration/-inbetribnahme • Zusätzliche Anforderungen beim Hinzufügen von E/A-Geräten Während eines Auftrags wird das Gerät entfernt ⇒ Abbruch der Operation, aber das restliche System bleibt stabil, d.h. interne Datenstrukturen im Kern dürfen nicht beschädigt werden Entfernung aller wartenden Aufträge für das entkoppelte Gerät Ausgabe entsprechender Fehlermeldungen 4-18 • Bestimmte E/A-Geräte dürfen während der Laufzeit hinzugefügt bzw. entfernt werden (hot pluggable devices) • Zusätzliche Treiberanforderungen bei Entfernung von E/A-Geräten Treiber und Hot Plug-In Schnittstellen für Gerätetreiber Pufferung Fehlerreport Anforderung und Freigabe von Geräten Abstraktion unterschiedlicher Blockgrößen O. Kao Betriebssysteme Abhängig vom aktuellen Gerät können bestimmte Basisfunktion gerätespezifisch und somit effizienter implementiert werden • Grenzen zwischen geräteabhängiger und –unabhängiger Software sind nicht exakt definiert • Unterteilung in 4-19 Bereitstellung der für alle E/A-Geräte notwendigen Basisfunktionen Bereitstellung möglichst einheitlicher Schnittstellen • Hauptpunkte 4.4 Geräteunabhängige E/ASoftware Spezifische Treiberschnittstellen Betriebssystem O. Kao Betriebssysteme Viele der in spezieller Hardware vorhandenen Funktionen sollen mit minimalen Leistungseinbüssen umgesetzt werden Beim Start: Erkennung von DirectX-Funktionen, die mit vorhandener Spezial-HW ausführbar sind. Der Rest wird von der CPU emuliert 4-20 Nur minimale Programmierschnittstelle vorhanden ⇒ der größte Teil der API wird vom Hersteller entwickelt Leistungssteigerung im Bereich 3D-Berechnungen, Texturmapping, … Zwischenweg durch Entwicklung von DirectX-Schnittstellen (DirectDraw, DirectSound, Direct3D, DirectInput, …) • Beispiel Windows (ab Windows95) Unterschiede von Treiber zu Treiber BS ruft treiberspezifische Funktionen auf Gerätetreiber benutzen spezifische Systemaufrufe ⇒ Effizient, aber großer Programmieraufwand • Spezifische Schnittstellen Spezifischer Schnittstellendesign zwischen BS und Gerätetreiber O. Kao Betriebssysteme Operationen: open(), close(), read(), write(), position() Einschränkungen/Anpassungen durch die übergebenen Parameter Nachteile bei Spezialhardware, effizienter Gerätenutzung 4-21 Gerätetyp: Eingabe, Ausgabe oder Ein- und Ausgabe Blocklänge und Anzahl der Blöcke Zugriffsart: Random (wahlfreier Zugriff), Sequentiell, Stream (geräteinternes Fenster wird mit jeder E/A-Operation in einer Richtung bewegt) Gerätspezifikation durch folgende Parameter Betriebssystem Einheitliche Treiberschnittstellen • Beispiel: Universalgerätedefinition nach Cheriton Schnittstellenspezifikation definiert aufzurufende Funktionen und legt fest, welche Treiberfunktionen für das BS bereitgestellt werden müssen Spezifische Funktionen durch standardisierte Schnittstellen registriert • Standardschnittstelle für alle Treiber Einheitlicher Schnittstellendesign zwischen BS und Gerätetreiber O. Kao Betriebssysteme 4-22 Gerätenutzung auf dieser Ebene verlangt Systemkenntnisse ⇒ Oft werden nur parallele/serielle Schnittstellen direkt genutzt, der Rest über dedizierte Geräteserver mit entsprechenden Treibern /dev/ttya: physische serielle Schnittstelle /dev/tty01 … /dev/ttyXX: abstrakte serielle Schnittstellen /dev/fd0 … /dev/fdXX: Diskettenlaufwerke /dev/hdaX … /dev/hdXX oder /dev/sd0 … /dev/sdXX (SCSI) Festplatten /dev/net0 … /dev/netXX: Netzwerkkarten Beispiel für eine /dev-Hierarchie Gerätöffnung entspricht Öffnung einer Datei mit dem angegeben Namen Lese- oder Schreibzugriff, Zugriffsrechtüberprüfung wie bei Dateien Für die Zugriffsdauer ist der zugreifende Prozess Besitzer des Geräts Jedes physische und abstrakte Gerät wird durch einen Namen im Dateisystem repräsentiert ⇒ Zugriff über Funktionen des Dateisystems • Abstrakte Geräte und generische Gerätearchitektur charakteristisch für BS im Umfeld UNIX Einbettung der E/A in das Dateisystem O. Kao Betriebssysteme Blockorientiertes Gerät /dev Verzeichnis: Zeichenorientiertes Gerät # ls –l /dev crw------- 1 root root 14,4 Dec 15 crw------- 1 root root 14,3 Dec 15 crw------- 1 root root 29,0 Aug 31 brw-rw---- 1 root floppy 2,0 Aug 31 brw-rw---- 1 root disk 3,0 Aug 31 brw-rw---- 1 root disk 3,1 Aug 31 brw-rw---- 1 root disk 3,64 Aug 31 brw-rw---- 1 root disk 3,65 Aug 31 crw------- 1 root root 45,0 Aug 31 crw-rw---- 1 root lp 6,0 Aug 31 crw-rw-rw- 1 root root 1,3 Aug 31 4-23 Nebengerätnummer audio0 dsp0 fb0 fd0 hda hda1 hdb hdb1 isdn0 lp0 null Hauptgerätnummer 17:01 17:01 01:31 01:31 01:31 01:31 01:31 01:31 01:31 01:31 01:31 Spezialdateien O. Kao Betriebssysteme • Beispiel: Pufferung bei Netzwerkkarten 4-24 Pufferung im Kernraum: Kopieren in Benutzerraum, wenn Puffer voll ⇒ Sicherung und Benachtrichtung über Ende der Operation erforderlich Wechselpuffertechnik mit mind. zwei Puffern: Erster Puffer voll, so wird der zweite Puffer benutzt. Währenddessen wird der erste Puffer geleert Sperrung gegen Auslagerung notwendig ⇒ Fragmentierung des Speichers bei vielen Puffern Sicherung der Puffer gegen Überlauf notwendig Keine Pufferung: Unterbrechung nach jedem einzulesenden/ auszugebenden Zeichen ⇒ großer Verwaltungsaufwand, ineffizient Pufferung im Benutzerraum: Anwendung reserviert Speicherplatz für n Zeichen, die auf einmal gelesen/geschrieben werden • Pufferungstechniken: großer Einfluss auf die Effizienz bei Ein- und Ausgabe von zeichen- und blockorientierten Geräten Pufferung O. Kao Betriebssysteme 4-25 • Belegung und Freigabe von gezielt zugewiesenen Geräten wie Drucker oder CD-Brenner ⇒ Prozesskoordination • Abstraktion der Blockgröße: HW-bedingte Blockgrößen werden durch Zusammenfassung in logische Blöcke vereinheitlicht ⇒ Systementwurf wesentlich einfacher Programmstruktur zur Fehlerbehandlung ist geräteunabhängig Viele Fehler(codes) gerätespezifisch ⇒ Behandlung durch den entsprechenden Treiber Fehlerklassen Programmierfehler: Behandlung durch aufrufende Software Gerätefehlfunktion bzw. -fehlinitialisierung: Reaktion durch Treiber (Gerät einschalten, Neupositionierung) oder durch Systemsoftware Komplexe Fehler: Kernstrukturen unbrauchbar, z.B. Rootverzeichnis oder Liste freier Blöcke zerstört ⇒ Systemrestauration notwendig • Fehlerbehandlung Weitere Funktionen der geräteunabhängigen Software O. Kao Betriebssysteme 4-26 Daten für exklusiv belegbare Geräte werden in Spezialdateien aufbereitet ⇒ Blockierung während Rechenzeit tritt nicht auf Datei wird in ein Spooling-Verzeichnis der übergeordneten Instanz zur Verwaltung des Betriebsmittels (Daemon) kopiert Sobald das Gerät verfügbar ist, übermittelt der Daemon die Datei Beispiele: Drucker, Mailserver, Newsserver, … • Spooling Schnittstelle zu E/A-Systemaufrufen, Formatierung der E/A, Spooling Einfachste Form: unformatierte Zeichenein- und –ausgabe ⇒ i.W. Übermittlung von Parametern zum Systemaufruf Komplexere Funktionen erlauben spezifische Formatierung, erzeugen entsprechenden Datenstrom und geben/lesen diesen im Zusammenspiel mit Systemaufrufen aus/ein • E/A-Bibliotheken: fester Bestandteil von Entwicklungssystemen • Grundfunktionen E/A-Software in Benutzerprozessen O. Kao Jede Oberfläche besteht aus konzentrischen Spuren (Tracks, 500-2000) mit Informationen Jede Spur wird aufgeteilt in Sektoren (50-200) Zylinder: Gesamtheit aller Spuren, die mit fester Armposition gelesen werden • Eigenschaften der Platten Betriebssysteme 4-27 Einer oder mehreren, schnell rotierenden, magnetischen Platten Beweglichem Schreib-/Lesekopf, der die gesamte Oberfläche erreichen kann und an einem Plattenarm befestigt ist Bei mehreren Einzelplatten hat der Plattenarm die Form eines Kamms • Plattenspeicher besteht aus 4.5 Beispiel für blockorientierte Geräte: Festplatten twait O. Kao tpos tserv Betriebssysteme tresp tlat tr/w • Wartezeit twait bis Auftrag ausgeführt werden kann • Antwortzeit tresp = twait+tserv ttrans in die gewünschte Position Latenzzeit tlat: Wartezeit, bis der gewünschte Sektor unter dem Lesekopf erscheint (Drehwartezeit) Schreib/Lesezeit tr/w: Tatsächliche Ausführungszeit Transferzeit ttrans: Übertragungszeit aus dem/in den Speicher Zeit • Gegeben sei ein Auftrag op zum Lesen vom Sektor s auf Spur n • Bedienzeit tserv für den Auftrag op entspricht der Summe aus Armpositionierzeit tpos: Bewegungszeit des Arms aus der aktuellen Kenngrößen bei Festplatten 4-28 O. Kao Betriebssysteme Zuordnung eines Bootblocks mit Liste freier Speicherbereiche, Wurzelverzeichnis und leeres Dateisystem zu jeder Partition Anschließend Aktualisierung der Partitionstabelle • High-Level-Formatierung 4-29 Aufteilung der gesamten Platte in virtuelle Festplatten Master-Boot-Record: Besonders ausgezeichneter Bereich im Sektor 0 mit Bootcode und Partitionstabelle mit Verweisen auf Startsektor und Größe jeder Partition Aktive Partition notwendig zum Booten • Partitionierung Identifikationsmuster: Sektorbeginn, Zylinder- und Sektornummer, … Daten: Üblicherweise 512 Byte Fehlerkorrekturcode: Redundante Sicherungsinformationen Anlegen von Spuren, Sektoren und Lücken zwischen Sektoren Reservesektoren als Ersatz für evtl. zerstörte Sektoren Festplattensektoren bestehen aus • Low-Level-Formatierung Plattenformatierung O. Kao Einfaches Interleaving Sequentielle Anordnung Betriebssysteme Interleaving (einfach und doppelt) zur Unterstützung beim kontinuierlichem Lesen von hintereinander liegenden Sektoren Zylinderversatz zum schnelleren Übergang zwischen Spuren • Optimierung der Zugriffsgeschwindigkeit Plattenformatierung (2) Doppeltes Interleaving 4-30 O. Kao Betriebssysteme 4-31 RAID-level 0: Die große, virtuelle Festplatte wird in Strips unterteilt Strips umfassen je k Sektoren (strip 0 = Sektoren 0,..,k-1;strip 1=Sektoren k,..,2k-1; …) Verteilung von strips über unabhängige Festplatten Parallelität beim Lesen/Schreiben eines sich über mehrere Strips erstreckenden Blocks RAID-0 gut geeignet für sehr große Anfragen Allerdings existiert keine Redundanz ⇒ Ausfall einer Platte im RAID führt zu Datenverlust • Sieben unterschiedliche RAID-Schemata (RAID level 0..6) Ansammlung von Festplatten wird von einem Controller angesteuert ⇒ BS nimmt nur eine einzige Festplatte wahr Datenverteilung über die Platten ⇒ paralleler Zugriff und Datensicherung durch Redundanz möglich • Redundante Anreihung billiger/unabhängiger Platten (Redundant Array of Inexepensive/Independent Disks) RAIDs O. Kao Betriebssysteme RAID level 0 4-32 RAID level 1 Redundanz: alle Daten doppelt vorhanden ⇒ beim Ausfall einfacher Umschaltvorgang zur Backup-Platte Schreibvorgang: alle Strips werden doppelt geschrieben Lesevorgang: Verteilung der Strips wie bei RAID 0. Durch doppelte Ausführung ist Lastenausgleich beim Zugriff auf häufig gebrauchten Strips möglich ⇒ Doppelte Geschwindigkeit möglich • RAID level 1: Alle Platten doppelt vorhanden (Original + Backup) Weitere RAID-Schemata O. Kao Betriebssysteme • RAID level 3: Vereinfachung durch eigene Parity-Platte 4-33 RAID level 3 RAID level 2 Datenelemente werden durch Parity-Bits (Hamming Code) erweitert (im Beispiel 4 Bits Daten + 3 Bits Parity) Vollständig synchrone Platten erlauben, dass jedes Bit auf einer Platte geschrieben wird ⇒ Fehlererkennung und teilweise –korrektur möglich Mehraufwand vernachlässigbar, wenn sehr große Anzahl von Festplatten verfügbar ist • RAID level 2: Aufteilung von Wörtern oder sogar einzelnen Bytes Weitere RAID-Schemata (2) O. Kao Betriebssysteme Eliminierung des Flaschenhals von RAID level 4 durch Verteilung der Parity-Strips über alle Platten • RAID level 5 mit Exklusiv-Oder verknüpft Mit diesem Parity-Strip können Daten einer einzigen verlorenen Platte rekonstruiert werden Sicherheit auf Kosten von Geschwindigkeit (Aktualisierung des Parity-Strips nach Schreibzugriffen ⇒ Parity-Platte als Flaschenhals) • RAID level 4 RAID level 0 mit zusätzlicher Strip-zu-Strip-Parität Alle Strips der Länge k werden RAID level 5 RAID level 4 Weitere RAID-Schemata (3) 4-34 O. Kao Betriebssysteme 4-35 ausgewählt FCFS (First Come First Serve): Abarbeitung der Aufträge in der Ankunftsreihenfolge Prioritätsstrategie: Die Reihenfolge wird entsprechenden der Priorität der Aufträge erstellt SSTF (Shortest Seek Time First): Auftrag mit kürzester Armpositionierung zuerst SCAN (Fahrstuhlstrategie): Der Plattenarm bewegt sich in eine Richtung, bis alle Anforderungen abgearbeitet sind. Erst anschließend ist Bewegung zurück oder in andere Richtung erlaubt SCAN-C: Zyklische SCAN-Strategie, da nach jedem Durchlauf Rücksprung auf Zylinder 0 • Kenngröße Armpositionierzeit tpos übt entscheidenden Einfluss auf Bedienzeit ⇒ Strategien zur Minimierung dieser Zeit notwendig • Bekannte Strategien Zufallsstrategie (Random): Aufträge werden in zufälliger Reihenfolge 4.6 Strategien für Plattentreiber FCFS-Strategie 0 … X 14 … 53 65 O. Kao X … X … X 37 … X 98 Betriebssysteme X 67 … X X 122 124 … • Aufträge in der Warteschlange (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und aktuelle Kopfposition 53 Faires Verfahren Effizient nur dann, wenn die Anfragen geclustert und benachbarte bzw. Sektoren mit geringem Abstand betreffen • Eigenschaften Zeit 4-36 X 183 SSTF-Strategie 0 … X 14 … 53 65 O. Kao X … X … X 37 … X 98 Betriebssysteme X 67 … X X 122 124 … • Aufträge (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und aktuelle Kopfposition 53 Minimierung der Anzahl der Armbewegungen Bei stark belasteten Platten tendiert der Arm zu den mittleren Sektoren ⇒ Aufträge mit äußeren Sektoren können verhungern • Eigenschaften Zeit 4-37 X 183 SCAN-Strategie (Aufzug- oder Fahrstuhlstrategie) 0 … X 14 … 53 65 O. Kao X … X … X 37 … X 98 Betriebssysteme X 67 … X X 122 124 … • Aufträge (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und aktuelle Kopfposition 53, aktuelle Richtung abwärts 4-38 X 183 Grundidee stammt von Bewegung von Fahrstühlen in Hochhäusern Ähnlich zu SSTF, verhindert aber Verhungern von Aufträgen Lokalität von Anfragen nicht ausreichend berücksichtigt • Eigenschaften Zeit SCAN-C-Strategie (Zyklische Fahrstuhlstrategie) 0 … X 14 … 53 65 O. Kao X … X … X 37 … X 98 Betriebssysteme X 67 … X X 122 124 … • Geringere Varianz der Antwortzeiten • Aufträge (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und aktuelle Kopfposition 53 ⇒ Bewegung nur in einer Richtung erlaubt Alternative 1: Zylinder 0 angesteuert Alternative 2: Auftrag mit niedrigster Zylindernummer angesteuert • Nach dem Ende einer Bewegung Zeit 4-39 X 183 Mittlere Antwortzeit O. Kao Betriebssysteme FCFS SSTF Auftragsrate 4-40 FCFS erfordert im Mittel ein Überfahren von 1/3 der Spuren SCAN, SCAN-C, SSTF haben besonders in Hochlastsituationen Vorteile, da im Grenzfall nur eine Spur weit gesprungen werden muss SCAN und SSTF benachteiligen die Randspuren SSTF weist im Mittel die beste Leistung auf, kann aber zum Verhungern von Aufträgen führen • Zusammenfassung der Effizienzeigenschaften 4.7 Effizienzbetrachtungen Zum Benutzer Vom Benutzer S lock Auftrag einordnen gemäß Kriterium unlock E O. Kao Betriebssysteme S S E lock Nächsten Auftrag auswählen unlock E Gerät 4-41 Aufbau einer speziellen Kanalvariante: Einsortierung während der Kommunikationsoperationen am Treibereingang Realisierung des Treibers als Fließband und Aufteilung der Funktionalität in Auftragsannahme und Auftragsbearbeitung • Auftragseinordnung in die Warteschlange für Nicht-FCFS-Strategien Umsortierung der Aufträge für SCAN- und SSFT-Strategien Treiber rechnend O. Kao Betriebssysteme Bei sequentiellem Zugriff sollte die Totzeit nicht länger sein als die zum Überfahren der Sektor- oder Blocklücke benötigte Zeit Andernfalls wird der nächste Sektor erst nach voller Umdrehung gelesen • Forderung Fertigsignal Treiber deblockieren Gerät Auftrag i Totzeit ri o kt e S Lücke Kopf Nächster E/A-Start Auftrag i +1 Se kt or i 4-42 +1 • Vorgehensweise Treiber blockieren nach Auftrag / Deblockieren nach Unterbrechung „Fertig“ führt zu langen Zeiten zwischen zwei Aufträgen (Totzeit) Totzeiten bei Treibern • • • • • O. Kao Zum Benutzer Vom Benutzer Betriebssysteme Überlappung der Aktivitäten Durchführung des aktuellen Auftrags Vorbereitung des nächsten Auftrags Zwei-Phasen-Treiber 1. Phase: Erzeugen eines Auftrags 2. Phase: Verlaufsanalyse Der Zugriff auf gerätespezifische Daten ist ein kritischer Abschnitt Erster Treiberprozess hat höhere Priorität ⇒ nach Ende des kritischen Abschnitts kann der neue Auftrag abgesetzt werden Bei mehreren Sätzen von E/ARegistern ist eine Mehrfachaktivierung des Treibers ohne Totzeiten möglich Totzeitreduzierung (Latency Hiding) S unlock E S lock E 4-43 Treiber Phase 2 Gerät Treiber Phase 1 • • • • O. Kao Betriebssysteme 4-44 Beim Datenzugriff wird zuerst überprüft, ob die Daten bereits im Cache sind Falls ja, gibt es zwei Zugriffsmöglichkeiten 1. Daten werden innerhalb des Hauptspeichers in den Datenraum des aufrufenden Prozesses kopiert 2. Innerhalb des Prozesses wird ein Zeiger auf die entsprechende Stelle im Plattenache gesetzt Andernfalls wird der angeforderte (evtl. auch benachbarte) Sektor(en) geladen Seitenersetzungsstrategie: in der Regel Least Recently Used (LRU) Realisierung als Puffer für ausgewählte Plattensektoren im Festplattencontroller Controllercache ist vollständig unabhängig vom BS-Cache Typische Cachegröße 2-16 MByte Ablauf analog zum Speichercache Plattencache O. Kao Betriebssysteme hello.c: #include <linux/kernel.h> #include <linux/module.h> #define MODVERSIONS #include <linux/modversions.h> int init_module(){ printk("\nHallo, Ich bin ein Modul.\n"); return 0; } void cleanup_module(){ printk("\nTschuess!\n"); } MODULE_LICENSE("GPL"); Ein einfacher Modul 1 4-45 O. Kao Betriebssysteme # gcc –c hello.c –Wall –D__KERNEL__ -DMODULE –I/lib/modules/ -r/build/include # insmod hello.o //Modul einfügen Hallo, Ich bin ein Modul. # rmmod hello //Modul ausnehmen Tschuess! Ein einfacher Modul 2 4-46 O. Kao Betriebssysteme 4-47 #define DRIVER_MAJOR 17 static int device_read(struct file *filp, char *buf, size_t count, loff_t *f_pos) { printk(KERN_DEBUG "closed device\n"); return 0; } static int device_close (struct inode* i,struct file* f){ printk(KERN_DEBUG "closed device\n"); return 0; } static int device_open (struct inode* i,struct file* f) { printk(KERN_DEBUG "opened device\n"); return 0; } Ein einfacher Treiber 1 O. Kao Betriebssysteme }; int init_module(void){ register_chrdev(17,"device",&device_fns); return 0; } void cleanup_module(void){ unregister_chrdev(17,"device"); } read: &device_read, open: &device_open, release: &device_close struct file_operations device_fns = { Ein einfacher Treiber 2 4-48