4 . E in - u n d A u s g a b e

Werbung
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
Herunterladen