4. Ein- und Ausgabe 4.1 Klassifikation von E/A

Werbung
4. Ein- und Ausgabe
• Überblick
4.1
4.2
4.3
4.4
4.5
4.6
4.7
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
O. Kao
Betriebssysteme
4-1
4.1 Klassifikation von E/A-Geräten
• Eine der Kernaufgaben von Betriebssystemen ist der Betrieb von
Ein- und Ausgabegeräten (E/A-Geräte)
Zeichenorientierte Geräte (character devices)
Erzeugen und akzeptieren Zeichenströme ohne Anforderungen an
eine Blockstruktur zu stellen
Nicht adressierbar, keine Suchoperationen
Beispiele: Tastatur, Zeigergeräte, Zeilendrucker, Netzwerkkarten
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, …
Eine Reihe von Geräten passt nicht in dieses Schema: Uhren,
Bildschirme, …
O. Kao
Betriebssysteme
4-2
Abstrakte Geräte
• Aus Anwendungssicht soll jedes physische Gerät durch ein
abstraktes Gerät in der Systemsoftware repräsentiert werden
• Abstrakte Geräte besitzen
Datenstruktur DCB (Device Control Block): Anschluss- und
Zustandsinformationen, z.B. Interruptnummer, Portadresse, …
Mindestmenge von Funktionen
DeviceId = OpenDevice (Gerätename, Betriebsparameter)
CloseDevice (DeviceId)
Read/Write (DeviceId, Von, Bis | Länge)
Gerätetreiber realisiert definierte Operationen, Routinen zur
Behandlung von geräteabhängigen Unterbrechungen
…
Anwendungen
…
Abstrakte Geräte
…
Physische Geräte
O. Kao
4-3
Betriebssysteme
Grundaufgaben beim Betrieb
von Geräten
•
Betrieb von E/A-Geräten umfasst zwei Grundaufgaben
1. Steuern des Geräts wie z.B. bewegliche Teile positionieren,
Betriebsparameter einstellen, …
Beispiele: Schreib/Lesekopf positionieren, Baudrate einstellen, Band
zurückspülen/auf Schreibmarke positionieren, …
2. Transportieren: Daten von der zentralen Instanz (CPU, Speicher) zum
Gerät und umgekehrt kopieren
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)
Zentrale Instanz
Auslösung
Puffer
Gerät
Datentransport
O. Kao
Betriebssysteme
4-4
Interaktion zwischen zentraler
Instanz und Gerät
• Interaktion wird oft als Dienstleistungsbeziehung realisiert
Gerät: Prozessor, der genau ein Prozess
ausführen kann
Kein Umschalten
Aktives Warten am Auftragseingang
Zentrale
S
Gerät
Auftrag
E
S
• Geräteinbindung in Prozessstrukturen
E
ignal
Fertigs
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
O. Kao
Betriebssysteme
4-5
Ablauf eines Transportauftrags
1. Portionierung der zu übertragenden Daten
Bytes (zeichenserielle Schnittstelle), Block bestimmter Größe bei
vorgegebener Gerätgeometrie wie Seitendrucker, Festplatte, …
2. Spezifikation der Parameter
Richtung: Lesen oder Schreiben von Daten
Quelle und Ziel der Daten
Wie viele Daten werden übertragen (Länge)
Ggf. Daten selbst
3. Rückmeldung: Auswertung der Gerätsignale bzgl. Fehler wie
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
O. Kao
Betriebssysteme
4-6
4.2 Schlüsselkonzepte von E/ASoftware
• Geräteunabhängigkeit
Systemaufrufe z.B. zum Lesen/Schreiben von Festplatte sollen so
gestalten, dass keine Neuübersetzung für neuen Gerätetyp erforderlich
• Einheitliches Benennungsschema: Name von Dateien/Geräten sind
alphanumerische Zeichenfolgen, unabhängig von der Gerätart
Beispiel UNIX: Einbindung von Disketten/CD-ROMS/… in die Dateisystemhierarchie ⇒ Geräte werden wie Dateien und Verzeichnisse
durch einen Pfadnamen identifiziert
• Fehlerbehandlung
Möglichst nah an der HW, z.B. erneutes Lesen eines Blocks
Erst bei schwerwiegenden Fehlern obere Schichten informieren
• Weitere Konzepte
Realisierung von synchronen/asynchronen Übertragungen
Effizienz und Zuverlässigkeit durch Pufferung
Gerätekoordination (gemeinsame/exklusive Nutzung)
O. Kao
Betriebssysteme
4-7
Schichtenaufbau von E/ASoftware
• Aufbau von E/A-Software üblicherweise in 4 Schichten
Untere Schichten kümmern sich um die HW-Details
Obere Schichten bieten einfache, einheitliche Schnittstellen an
E/A-Software in Anwendungen
Geräteunabhängige E/A-Systemsoftware
Gerätetreiber
Unterbrechungsbehandlung (Interrupt handler)
Hardware
• Einzelne Schichten
Unterbrechungsbehandlung
Gerätetreiber: Direkte Ansteuerung der spezifischen Geräte
Geräteunabhängige E/A-Systemsoftware
Durchführung der für alle E/A-Geräte notwendigen Basisfunktionen
Bereitstellung einer einheitlichen Schnittstelle für Anwendungen
E/A-Software in Anwendungen: Systemaufrufe für die E/A
O. Kao
Betriebssysteme
4-8
Unterbrechungsbehandlung
• Behandlung einer Unterbrechung erfordert folgende Schritte
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
• Unterbrechungsbehandlung: nicht-triviale und zeitintensive Aufgabe
⇒ Effiziente Implementierung und HW-Unterstützung notwendig
O. Kao
Betriebssysteme
4-9
4.3 Gerätetreiber (Driver)
•
Gerätetreiber fassen alle für ein Gerät spezifischen
Steuersoftwareelemente in einer Komponente zusammen
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)
•
Treiber benötigen Zugriffsmöglichkeiten auf die Rechenhardware
und Geräteregister
1. Möglichkeit (Standard): Treiber sind Bestandteil des BS-Kerns
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
Durch Trennung kann u.U. die Ausfallsicherheit erhöht werden
(Abstürze infolge defekter Treiber vermeiden)
O. Kao
Betriebssysteme
4-10
Logische Positionierung der
Gerätetreiber (1. Möglichkeit)
Benutzeradressraum
Kernadressraum
Hardware
Anwendung
Rest des Betriebssystems
Druckertreiber
Webcamtreiber
CD-ROM
treiber
DruckerController
WebcamController
CD-ROM
Controller
Geräte
O. Kao
4-11
Betriebssysteme
Geräteserver (2. Möglichkeit)
• Abstrakte Geräte in eigenständigen Adressräumen im Benutzerraum
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
…
Anwendungen
…
Geräteserver
Abstrakte Geräte
Kern
…
O. Kao
Betriebssysteme
Physische Geräte
4-12
Memory-mapped Dateien
• Dateien werden in den virtuellen Adressraum eingeblendet
Ab einer bestimmten Adresse werden die Speicherworte der
eingeblendeten Datei angeordnet
Dateizugriffe werden durch Speicherzugriffe realisiert
Bei Prozessende wird der Speicherbereich in Datei geschrieben
• Konkrete Realisierung
Eingeblendete Datei wird als Ein- und Auslagerungsdatei für den
Speicherbereich gekennzeichnet
Registrierung von Schreib/Lesezugriffen durch
Ü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
O. Kao
Betriebssysteme
4-13
Memory-mapped I/O
O. Kao
Betriebssysteme
4-14
Typische Ausführungsreihenfolge
bei Gerätetreibern
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
Belegt ⇒ Auftrag in Warteschlange einreihen
Frei ⇒ Ggf. Initialisierung durchführen, z.B. Gerät/Motor einschalten,
Anfangszustand herstellen
4. Steuerung
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
O. Kao
Betriebssysteme
4-15
Ausführungsreihenfolge bei
Gerätetreibern (2)
• Was passiert nach dem Absetzen der Kommandos?
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
• Vorgestellter Ablauf ist nur grobe Annäherung an reale
Situationen ⇒ Komplexitätserhöhung durch Unterbrechungen
und hot pluggable Geräte
O. Kao
Betriebssysteme
4-16
Unterbrechung von Treibern
• 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
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
O. Kao
Betriebssysteme
4-17
Treiber und Hot Plug-In
• 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
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
• Zusätzliche Anforderungen beim Hinzufügen von E/A-Geräten
Dynamische Registrierung neu ankommender Geräte
Umschichtung von Ressourcen, z.B. Unterbrechungsleitungen
Einrichtung der notwendigen Datenstrukturen
Aktualisierung der Ressourcenanzeigen, …
• Plug-and-Play: automatische Gerätekonfiguration/-inbetribnahme
O. Kao
Betriebssysteme
4-18
4.4 Geräteunabhängige E/ASoftware
• Hauptpunkte
Bereitstellung der für alle E/A-Geräte notwendigen Basisfunktionen
Bereitstellung möglichst einheitlicher Schnittstellen
• Unterteilung in
Schnittstellen für Gerätetreiber
Pufferung
Fehlerreport
Anforderung und Freigabe von Geräten
Abstraktion unterschiedlicher Blockgrößen
• Grenzen zwischen geräteabhängiger und –unabhängiger
Software sind nicht exakt definiert
Abhängig vom aktuellen Gerät können bestimmte Basisfunktion
gerätespezifisch und somit effizienter implementiert werden
O. Kao
4-19
Betriebssysteme
Spezifischer Schnittstellendesign
zwischen BS und Gerätetreiber
• Spezifische Schnittstellen
Unterschiede von Treiber zu Treiber
BS ruft treiberspezifische Funktionen auf
Gerätetreiber benutzen spezifische
Systemaufrufe
⇒ Effizient, aber großer Programmieraufwand
• Beispiel Windows (ab Windows95)
Betriebssystem
Spezifische Treiberschnittstellen
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, …)
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
O. Kao
Betriebssysteme
4-20
Einheitlicher Schnittstellendesign
zwischen BS und Gerätetreiber
• Standardschnittstelle für alle Treiber
Schnittstellenspezifikation definiert
aufzurufende Funktionen und legt fest,
welche Treiberfunktionen für das BS
bereitgestellt werden müssen
Spezifische Funktionen durch
standardisierte Schnittstellen registriert
Betriebssystem
Einheitliche Treiberschnittstellen
• Beispiel: Universalgerätedefinition nach Cheriton
Gerätspezifikation durch folgende Parameter
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)
Operationen: open(), close(), read(), write(), position()
Einschränkungen/Anpassungen durch die übergebenen Parameter
Nachteile bei Spezialhardware, effizienter Gerätenutzung
O. Kao
Betriebssysteme
4-21
Einbettung der E/A in das
Dateisystem
• Abstrakte Geräte und generische Gerätearchitektur charakteristisch
für BS im Umfeld UNIX
Jedes physische und abstrakte Gerät wird durch einen Namen im
Dateisystem repräsentiert ⇒ Zugriff über Funktionen des Dateisystems
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
Beispiel für eine /dev-Hierarchie
/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
Gerätenutzung auf dieser Ebene verlangt Systemkenntnisse ⇒ Oft
werden nur parallele/serielle Schnittstellen direkt genutzt, der Rest über
dedizierte Geräteserver mit entsprechenden Treibern
O. Kao
Betriebssysteme
4-22
Spezialdateien
/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
Blockorientiertes Gerät
O. Kao
Hauptgerätnummer
17:01
17:01
01:31
01:31
01:31
01:31
01:31
01:31
01:31
01:31
01:31
audio0
dsp0
fb0
fd0
hda
hda1
hdb
hdb1
isdn0
lp0
null
Nebengerätnummer
Betriebssysteme
4-23
Pufferung
• Pufferungstechniken: großer Einfluss auf die Effizienz bei Ein- und
Ausgabe von zeichen- und blockorientierten Geräten
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
Sperrung gegen Auslagerung notwendig ⇒ Fragmentierung des
Speichers bei vielen Puffern
Sicherung der Puffer gegen Überlauf notwendig
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
• Beispiel: Pufferung bei Netzwerkkarten
O. Kao
Betriebssysteme
4-24
Weitere Funktionen der
geräteunabhängigen Software
• Fehlerbehandlung
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
• 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
O. Kao
Betriebssysteme
4-25
E/A-Software in
Benutzerprozessen
• E/A-Bibliotheken: fester Bestandteil von Entwicklungssystemen
• Grundfunktionen
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
• Spooling
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, …
O. Kao
Betriebssysteme
4-26
4.5 Beispiel für blockorientierte
Geräte: Festplatten
• Plattenspeicher besteht aus
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
• Eigenschaften der Platten
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
O. Kao
4-27
Betriebssysteme
Kenngrößen bei Festplatten
• 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
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
• Wartezeit twait bis Auftrag ausgeführt werden kann
• Antwortzeit tresp = twait+tserv
tpos
tlat
twait
tr/w
tserv
ttrans
Zeit
tresp
O. Kao
Betriebssysteme
4-28
Plattenformatierung
• Low-Level-Formatierung
Anlegen von Spuren, Sektoren und Lücken zwischen Sektoren
Reservesektoren als Ersatz für evtl. zerstörte Sektoren
Festplattensektoren bestehen aus
Identifikationsmuster: Sektorbeginn, Zylinder- und Sektornummer, …
Daten: Üblicherweise 512 Byte
Fehlerkorrekturcode: Redundante Sicherungsinformationen
• Partitionierung
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
• High-Level-Formatierung
Zuordnung eines Bootblocks mit Liste freier Speicherbereiche,
Wurzelverzeichnis und leeres Dateisystem zu jeder Partition
Anschließend Aktualisierung der Partitionstabelle
O. Kao
4-29
Betriebssysteme
Plattenformatierung (2)
• Optimierung der Zugriffsgeschwindigkeit
Zylinderversatz zum schnelleren Übergang zwischen Spuren
O. Kao
Doppeltes
Interleaving
Einfaches
Interleaving
Sequentielle
Anordnung
Interleaving (einfach und doppelt) zur Unterstützung beim
kontinuierlichem Lesen von hintereinander liegenden Sektoren
Betriebssysteme
4-30
RAIDs
• Redundante Anreihung billiger/unabhängiger Platten (Redundant
Array of Inexepensive/Independent Disks)
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
• Sieben unterschiedliche RAID-Schemata (RAID level 0..6)
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
O. Kao
4-31
Betriebssysteme
Weitere RAID-Schemata
• RAID level 1: Alle Platten doppelt vorhanden (Original + Backup)
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
Redundanz: alle Daten doppelt vorhanden ⇒ beim Ausfall einfacher
Umschaltvorgang zur Backup-Platte
RAID level 0
RAID
level 1
O. Kao
Betriebssysteme
4-32
Weitere RAID-Schemata (2)
• RAID level 2: Aufteilung von Wörtern oder sogar einzelnen Bytes
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 3: Vereinfachung durch eigene Parity-Platte
RAID
level 2
RAID
level 3
O. Kao
4-33
Betriebssysteme
Weitere RAID-Schemata (3)
• RAID level 4
RAID level 0 mit zusätzlicher
Strip-zu-Strip-Parität
Alle Strips der Länge k werden
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 5
• RAID level 5
Eliminierung des Flaschenhals
von RAID level 4 durch
Verteilung der Parity-Strips über
alle Platten
O. Kao
Betriebssysteme
4-34
4.6 Strategien für Plattentreiber
• 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
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
O. Kao
4-35
Betriebssysteme
FCFS-Strategie
• Eigenschaften
Faires Verfahren
Effizient nur dann, wenn die Anfragen geclustert und benachbarte
bzw. Sektoren mit geringem Abstand betreffen
• Aufträge in der Warteschlange (Spurnummer) 98, 183, 37, 122,
14, 124, 65, 67 und aktuelle Kopfposition 53
0
14
…
53
65
67
X … X … X
X
98
…
X
122 124
…
X
X
183
…
X
Zeit
… X
37
O. Kao
Betriebssysteme
4-36
SSTF-Strategie
• Eigenschaften
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
• Aufträge (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und
aktuelle Kopfposition 53
0
14
…
53
65
67
X … X … X
X
98
…
X
122 124
…
X
X
183
…
X
Zeit
… X
37
O. Kao
4-37
Betriebssysteme
SCAN-Strategie
(Aufzug- oder Fahrstuhlstrategie)
• Eigenschaften
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
• Aufträge (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und
aktuelle Kopfposition 53, aktuelle Richtung abwärts
0
14
…
53
65
67
X … X … X
X
98
…
X
122 124
…
X
X
183
…
X
Zeit
… X
37
O. Kao
Betriebssysteme
4-38
SCAN-C-Strategie
(Zyklische Fahrstuhlstrategie)
• Nach dem Ende einer Bewegung
Alternative 1: Zylinder 0 angesteuert
Alternative 2: Auftrag mit niedrigster Zylindernummer angesteuert
⇒ Bewegung nur in einer Richtung erlaubt
• Geringere Varianz der Antwortzeiten
• Aufträge (Spurnummer) 98, 183, 37, 122, 14, 124, 65, 67 und
aktuelle Kopfposition 53
0
14
…
53
65
67
X … X … X
X
98
…
X
122 124
…
X
X
183
…
X
Zeit
… X
37
O. Kao
4-39
Betriebssysteme
4.7 Effizienzbetrachtungen
• Zusammenfassung der Effizienzeigenschaften
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
Mittlere
Antwortzeit
FCFS
SSTF
Auftragsrate
O. Kao
Betriebssysteme
4-40
Umsortierung der Aufträge für
SCAN- und SSFT-Strategien
• Auftragseinordnung in die Warteschlange für Nicht-FCFS-Strategien
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
Vom
Benutzer
E
E
lock
Nächsten Auftrag
auswählen
unlock
lock
Auftrag einordnen
gemäß Kriterium
unlock
S
E
S
Zum
Benutzer
Gerät
S
O. Kao
4-41
Betriebssysteme
Totzeiten bei Treibern
• Vorgehensweise Treiber blockieren nach Auftrag / Deblockieren nach
Unterbrechung „Fertig“ führt zu langen Zeiten zwischen zwei
Aufträgen (Totzeit)
Totzeit
Gerät
Auftrag i
Auftrag i +1
Fertigsignal
Treiber deblockieren
Treiber rechnend
Nächster E/A-Start
Kopf
• Forderung
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
O. Kao
Betriebssysteme
Se
kt
or
i
i
or
t
k
Se
+1
Lücke
4-42
Totzeitreduzierung
(Latency Hiding)
•
•
•
•
•
Ü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
O. Kao
Vom
Benutzer
Treiber
Phase 1
E
lock
S
Gerät
E
Zum
Benutzer
unlock
S
Treiber
Phase 2
Betriebssysteme
4-43
Plattencache
•
•
•
•
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
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)
O. Kao
Betriebssysteme
4-44
Ein einfacher Modul 1
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");
O. Kao
Betriebssysteme
4-45
Ein einfacher Modul 2
# 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!
O. Kao
Betriebssysteme
4-46
Ein einfacher Treiber 1
#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;
}
O. Kao
Betriebssysteme
4-47
Ein einfacher Treiber 2
struct file_operations device_fns = {
read: &device_read,
open: &device_open,
release: &device_close
};
int init_module(void){
register_chrdev(17,"device",&device_fns);
return 0;
}
void cleanup_module(void){
unregister_chrdev(17,"device");
}
O. Kao
Betriebssysteme
4-48
Herunterladen