550 likes | 644 Views
Eingabe / Ausgabe. Energieverwaltung. I/O-Schichtung. Gerätemodelle. RAID-Konfigurationen. Treiber. Gerätetreiber. Benutzerprozeß. user mode. kernel. -Verteiler. kernel mode. Auftragsverwaltung. Pufferung. Treiber. BS-Kern. Controller. Gerät.
E N D
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber Ein- und Ausgabeverwaltung
Gerätetreiber Benutzerprozeß user mode kernel -Verteiler kernel mode Auftragsverwaltung Pufferung Treiber BS-Kern Controller Gerät Gerätetreiber = Kapselunggerätetypischer Merkmale Aufgaben • Übersetzung vom logischen Programmiermodell zu gerätespezifischen Anforderungen • Koordination der schreibenden und lesenden Prozesse für das Gerät • Koordination verschiedener Geräte gleichen Typs • Pufferung der Daten Ein- und Ausgabeverwaltung
Gerätetreiber Applikation Systemaufruf Betriebssystem I/O Manager BS - Treiber zu UDI Schnittstelle UDI Ablauf - UDI - Treiber umgebung UDI - Services zu Hardware - mapping Hardware Problem: neue Geräte, neue Treiber nötig (Fehlermöglichkeit!) Lösung: Standardschnittstellen für Treiber Beispiel: UDI (Unix) Uniform Driver Interface Treiber = Virtuelle Maschine plattformunabhängige Ablaufumgebung Ein- und Ausgabeverwaltung
Ein-/Ausgabeschichten: Unix Benutzerprozeß user mode kernel - Verteiler kernel mode Virtuelles Dateisystem (VFS) Minix Ext2 Reiser ... Pufferung Gerätetreiber Gerät1 Gerät2 Gerät3 ... • Dateisystemtreiber (Linux) Dateisystemtreiber Ein- und Ausgabeverwaltung
Ein-/Ausgabeschichten: Unix • Stream –System: Einschalten von Filterschichten Ein- und Ausgabeverwaltung
Ein-/Ausgabeschichten: Windows NT Benutzerprozeß Benutzerprozeß kernel -Verteiler kernel -Verteiler I/O-Manager/Cache I/O-Manager Gerätetreiber Dateisystem-Treiber Multivolume-Treiber Gerät I/O-Manager/Cache I/O-Manager/Cache Monitor/Drucker/ Gerätetreiber Tastatur/Maus/… Gerät CD-ROM/Platten/ Flo p py/ Tape/… • Dynam. Schichtung durch Aufträge an I/O-Manager user mode kernel mode Dateizugriff Einfacher I/O-Zugriff Ein- und Ausgabeverwaltung
Treiber: Fehlertoleranzfunktionen MFT-Eintrag Nichtresidente Attribu steile t standard information file name VCN 0 1 2 (security descriptor) defekt data stream (Attr.) LCN 1344 1345 1346 start VCN start LCN length VCN 3 4 5 0 1344 3 3 1020 3 LCN 1020 1021 1022 ... • Unix: corrupted-Bit=1 chkdsk() beim nächsten mount() • WindowsNT: dynamisches bad cluster mapping durch FtDisk Beispiel:Ausfall eines Clusters (ohne Gerätemapping) Ein- und Ausgabeverwaltung
Treiber: Fehlertoleranzfunktionen • Windows NT: Clusterersatz MFT-Eintrag Nichtresidente Attributsteile standard information file name VCN 0 1 (security descriptor) data stream 2 LCN 1344 1345 start VCN start LCN length 1562 0 1344 2 VCN 3 4 5 2 1562 1 LCN 1020 1021 1022 3 1020 3 ... Kein Ersatz möglich: corruptedBit=1, checkDisk() nach mount() Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber Dateiverwaltung Ein- und Ausgabeverwaltung
Gerätemodelle: Übersicht • WahlfreierZugriffrandom access (RAM, Festplatten, CD-ROM, DVD, Floppy Disk, ...) • SequentiellerZugriffsequential access (Terminals, Magnetbandgeräte, A/D-Wandler, ...) Nötig: Wissen über „typisches“ Verhalten der Geräte für Treiberdesign Treibertypen Ein- und Ausgabeverwaltung
Festplatten • Magnetplatten • Schreib/Leseköpfe • Controllerelektronik Ein- und Ausgabeverwaltung
Festplattenmodell Zylindergruppe Spur mit Positionier- Se k toren mechanik Schreib-/Lesekopf Drehachse • Schreib/Lese-Magnetkopf • Schreib/Lesespur mit Sektoren • Zylindergruppe: Spuren bei mehreren Platten Alu-Platte mit Eisenoxid Ein- und Ausgabeverwaltung
Festplattenmodell Gesamtzeit T= tS + + tRlin. Funktion in k • mittlere Zugriffszeit tS (average seek time) pro Spur • mittlere Wartezeit tD (rotational delay) pro Sektor, max. tR • Transferzeit tTfür m Bytes pro Spur Datentransferrate = m/tT mittl. tD= tR/2, k Bytes rel. Spuranteil k/m Moderne Platten: tS 10 ms. Bei 6000U/m oder 100U/s tR 10ms Effektive Datenrate k/Tstark bestimmt durch konstanten initialen Term tS ! Erhöhung der Rate durch größere Seiten. Ein- und Ausgabeverwaltung
Festplattenmodell: Bus-Parallelaktivität Ein- und Ausgabeverwaltung
Festplatten: Zugriffsoptimierung • Schneller Zugriff durch Treiberoptimierung • optimale Ausnutzung der Geräteeigenschaften • Berücksichtigung der HW-Konfiguration Aber: • Festplattenparameter ändern sich pro Modell • Plattenmechanik, Puffergröße, Buseigenschaften in jedem Rechner unterschiedlich • jeder Treiber müßte manuell angepaßt werden ! Besser: Hersteller optimiert internen Controller (adaptiv!) nach außen nur einheitliches virt. Gerät. • Unix: Pro Zylindergruppe eine supernode neue i-nodes + Datenblöcke auf gleicher Spurposition • Win NT: MFT auf Spur in Plattenmitte Ein- und Ausgabeverwaltung
SSD: RAM-Disks Solid State Disk (SSD) = RAM als schnelle Festplatte über Standard-Massenspeichertreiber Wozu? RAM = teuer & schnell Festplatte = preiswert & langsam Sinnvoll, wenn • Mainframe-Erweiterung: schnelles Dateisystem (swap file) (ca.10-fach) • Geringerer Platzbedarf (20%) • RAM nicht direkt adressierbar (z.B. MS-DOS, 32 Bit BS-ab 4GB) • Robuster mobiler Rechner (Erschütterungen) Ein- und Ausgabeverwaltung
DRAM, Nand-FLASH SSD und HD-Speicher • Preisentwicklung $ pro GByte Preisverfall HD: ~45% pro Jahr, Flash: >50% pro Jahr Ein- und Ausgabeverwaltung
Geräteschnittstellen: I/O mapping • Keine dedizierten I/O-Kanäle, sondern I/O-mapping zu realen bzw. virtuellen Speicheradressen: Behandlung der Geräteregister (Funktionen, Parameter) wie Speicher Übertragung der Datenblöcke mittels DMA-Kanälen, z.B. durch Controllerprozessor Ein- und Ausgabeverwaltung
Geräteschnittstellen • Beispiel: Standard PC Hardware reale I/OAdressen Ein- und Ausgabeverwaltung
Beispiel Parallel Port - Datenpuffer Daten Register Byte Adresse: IOBase+0(read+write) Ein- und Ausgabeverwaltung
Beispiel Parallel Port - Statusregister Status-Register IOBase+1 (Read Only) Ein- und Ausgabeverwaltung
Beispiel Parallel Port - Befehlsregister Control Register Adresse: IOBase+2 (read+write) Ein- und Ausgabeverwaltung
Geräteschnittstellen: Interruptvektoren Interrupt-Controller IRQ Status register CPU Vector base register Gerät 0 Gerät 1 … Gerät 15 Interrupt vector Interrupt vector table Ein- und Ausgabeverwaltung
Geräteschnittstellen: PC IRQs Ein- und Ausgabeverwaltung
Geräteschnittstelle: Festplatten Registerarten • Befehlsregister (Write only) Kontrollregister mit Befehlscode für Funktionen • Statusregister (Read only) Status mit Bitbedeutungen (z.B. Bit4=1 Lesen beendet) • Adreßregister Angabe von GerätNr, Zylinder, Spur, Sektor, Platte, Kopf, .. • Datenpuffer (Read/Write) Adresse für I/O, z.B. DMA-Transfer • Interruptsystem Aufsetzen/Löschen eines Interrupts für Benachrichtigung „Befehl ausgeführt“ Zu viele Register: zu viel Adreßraum nötig. Abhilfe: Messages mit Befehlsheader + DMA-Transfer Ein- und Ausgabeverwaltung
Geräteschnittstelle: Serielle Geräte Sequentielles Read/Write ohne Adreßinformation (Terminals, Zeilendrucker, Tastatur) Register • Kontrollregister Übertragungsgeschwindigkeit, synchron/asynchron, .. • Eingaberegister (read only) zuletzt empfangenes Zeichen • Ausgaberegister (write only) zu sendendes Zeichen • Interruptsystem Interrupt auslösen nach jedem gesendeten/empfangenem Zeichen Flußsteuerung: Hardware(RS232) oder Software (XON/XOFF) Ein- und Ausgabeverwaltung
Geräteschnittstellen: Initialisierung • Problem: zentrale Koordination der I/O-Adressen, Pufferadressen, Interruptnummern • Lösung: Plug-and-Play PnP • Erfassung aller Geräte (Hersteller Id, GeräteId, Gerätenamen, Anforderungen) • Auslegung der Listen für Adressen und Interrupts unter Berücksichtigung der legacy devices • Einstellen der Geräte entsprechend der Liste BIOS: Basic Input-Output System (On-board-Betriebssystem) Erstellung einer Liste ESCD Windows NT: Erstellung einer eigenen Liste bzw. Aufsetzen auf der vorigen Liste Unix (Linux): Aufsetzen auf der ESCD Ein- und Ausgabeverwaltung
Geräteinitialisierung: PnP auf PCI • PCI-Bus hat Adressplätze für Slots Windows PCI-DeviceId: DID&VID&SID&SVID Auslesen. Device neu: nachsehen in INF-Dateien, installieren des Treibers (neu=neuer chip, neue SW-Version etc.: neuer SID), Beispiel: Soundkarte DID=11, SVID=1102(Creative), SID=0002(Live!), class=„MultiMediaDevice“, Function=0 DID=11, SVID=1102(Creative), SID=7002(Gameport),class=„InputDevice“, Function=1 Ein- und Ausgabeverwaltung
Geräteinitialisierung: PnP • PCI Treiber testet und findet Busse, Geräte, Funktionen • PCI Treiber liest den Konfigurationsraum (INF-Dateien) und erzeugt die IDs. • PCI Treiber führt Ausnahmebehandlung durch: An- und Ausschalten von Merkmalen, Anwenden von Patchen und workarounds. • PCI Treiber installiert den Gerätetreiber. • PCI Treiber lädt den Gerätetreiber. • Der Gerätetreiber wendet alle nötigen Ausnahmen an, An- und Ausschalten von Merkmalen, Anwenden von Patchen und workarounds. • PCI Treiber benachrichtigt den Gerätetreiber, das Gerät zu initialisieren. Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber Dateiverwaltung Ein- und Ausgabeverwaltung
Multiple Plattenspeicher: RAID Disk 1 Disk 2 . . . Disk N Streifen M max max max . . . Streifen 1 Streifen 0 0 0 0 RAID = Redundant Array of Inexpensive Disks • Multiple Festplatten = 1 großer virtueller Plattenspeicher Vorteile: • Schnelligkeit • Potentielle Fehlertoleranz • Inkrementelle Speichererweiterung möglich Beispiel: RAID 0 Partition = Streifen (Schnelligkeit),z.B. 64kB Datei Ein- und Ausgabeverwaltung
Multiple Plattenspeicher: RAID1 Disk 1 Disk 2 max max „Spiegel “ 0 0 Ausfalltoleranz durch Spiegelplatten Vorteile • schnelleres Lesen auf zwei Laufwerken in parallel • Kopie sofort verfügbar bei Ausfall einer Platte Nachteile • Schreiben parallel auf zwei Laufwerken ist aufwändiger • Kopie muss immer aktualisiert werden Mit Streifen: Raid 0/1-System Ein- und Ausgabeverwaltung
Multiple Plattenspeicher: RAID-2 Es folgt direkt aus der Tabelle Å Å a b p=a b p b 1 1 0 1 Å Å Å Å Å somit p a 0 = a b = a b b = a 0 = a p gespeichert, a rekonstruiert 1 0 1 1 Å a a = 0 0 1 1 0 0 0 0 0 Anwendung Wortparität Wort7 Wort6 Wort5 Wort0 Disk 1 .. . Daten Disk 2 ... ... ... ... ... .. . Parität bit 7 bit 6 bit 5 bit0 Disk n 1 44444 2 444444 3 1 neues Datenbyte pro Platte Disk n+1 Controller Fehlerkorrektur durch Paritätsbildung, z.B. Exclusiv-Oder XOR Å p = b1b2...bn Ist Laufwerk b2defekt, so gilt p b1b3...bn =b1b2b3 ...bnb1b3...bn = b1b1...bn bnb2 = 0 ... 0 b2 = b2 Rekonstruktion Aber: Spindelsynchronisation nötig! Ein- und Ausgabeverwaltung
Multiple Plattenspeicher: RAID3,4,5 • RAID-3 Zusammenfassung von FT-Bits (ECC) des Puffers auf extra Platte wie bei RAID-2: Ausfalltoleranz multipler Laufwerke Problem: Spindelsynchronisation nötig wie bei RAID-2 • RAID-4 Zusammenfassung von Daten und FT-Information zu Streifen und speichern auf Einzel-Platten ohne Spindelsynchronisation. • RAID-5 Fehlertoleranz-Information jeweils auf anderer Platte speichern (schneller!) ABER: Backup nötig! HW-Fehlertoleranz SW-Toleranz Ein- und Ausgabeverwaltung
Ausfallwahrscheinlichkeiten • Berechnung der System-Ausfallwahrscheinlichkeit Beispiel: 2 Festplatten, RAID 0 P(Ausfall einer Platte) = 0,1 [pro Zeiteinheit] F1 F2 RAID 0 = striping Systemausfall, wenn mind. 1 Platte defekt. Also: P(Ausfall) = 0,01+0,09+0,09 = 0,19 Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber: Unix und NT Dateiverwaltung Ein- und Ausgabeverwaltung
Treiberschnittstelle: Unix Zentrale Treiber-Funktionverteilungstabelleconf.c Random Access (Block) devices struct bdevsw bdevsw[] = { { tmopen, tmclose,tmstrategy,tmdump,0,B_TAPE}, /*0*/ { nodev, nodev, nodev, nodev, 0,B_TAPE}, /*1*/ { xyopen, nulldev,xystrategy,xydump,xysize,0}, /*2*/ ...}; open, close, strategy, dump, psize, flags Sequentiel (character) devices struct cdevsw cdevsw[] = { {cnopen, cnclose, cnread, cnwrite, cnioctl, nulldev, cnse- lect, 0,0,0}, /*0*/ {nodev, nodev, nodev, nodev, nodev, nodev, nodev, 0, &wcinfo, 0,}, /*1*/ {syopen, nulldev,syread, sywrite, syioctl, nulldev, syselect, 0,0,0,}, /*2*/ ... }; open, close, read, write, ioctl, reset, select, mmap, stream, segmap Ein- und Ausgabeverwaltung
Treiberschnittstelle: Unix Kernprozeduren xx = lp,mt oder rk • xx_init Treiber- und Geräteinitialisierung, aufgerufen beim Systemstart • xx_read, xx_write character devices Lesen und Schreiben von Daten • xx_open, xx_close Gerätespezifische Bedeutung, z.B. Band rückspulen, Seitenvorschub etc. • xx_ioctl character devices Einstellung z.B. Übertragungsgeschwindigkeit, Modus, high/low density,.. • xx_strategy block devices Block read/write, log.Blocknummern phys. Blocknummern, Pufferstrategien etc. • xx_intr InterruptServiceRoutine zum DMA-Aufsetzen bzw. Pufferbehandlung Ein- und Ausgabeverwaltung
Treiberschnittstelle: Windows NT • Treiberklassen • Eingabegeräte (Human Interface Devices) Maus, Tastatur, Datenhandschuh, .. • Standbildgeräte Scanner, Digitalcamera, ... • Datenströme Videocamcorder, Audiorecorder, ... • allgem. Klassentreiber und gerätespezif. Zusatz (Mini-Treiber) • Anforderungen an NT-Treiber • Multiprozessorfähig (spin locks für kritische Abschnitte, reentrant-fähig) • Energieverwaltung (stand by, Hibernation,..) • Reaktion auf power failure: Spezifikation atomarer Teile, Geräte-setup • Ein- und Ausschalten im laufenden Betrieb (hot swappable devices) • PnP-fähig: Konfigurierbar bei IRQ, DMA-Kanal und Registeradressen Ein- und Ausgabeverwaltung
Treiberschnittstelle: Windows NT Treiberfunktionen • Initialisierungsprozeduren(load driver, DriverEntry, AddDevice) Treiber+Deviceobjekt-Erzeugung durch I/O-Manager, Initialisierung des Treibers • Abschlußprozedur(unload driver) Freigabe von Puffern, handles, etc. für I/O-Manager • Gruppe von Service-Funktionen (dispatch routines) Lesen, Schreiben etc. für die Ein- und Ausgabeaufträge (IRP) • Prozedur, um den Datentransfer zu starten (start I/O) oder abzubrechen (cancel I/O) • Interrupt-Service-Routine (ISR) mit hoher Prio nur fürs Notwendige. Alles andere über DPCs. • Eine zur ISR gehörende DPC-Prozedur (Deferred Procedure Call) Datentransfer abschließen, nächsten Auftrag holen, ... • Prozedur, um den Datentransferabzuschließen (completion routine) Info überErfolg, Fehler, Abbruch an aufrufenden Treiber • Eine fehlernotierende Prozedur (error logging) Auftrag an I/O Manager zur Fehlerprotokollierung Ein- und Ausgabeverwaltung
Treiberschnittstelle: Windows NT I/O-Manager Treiberobjekt Read Write Geräte- Geräte- Geräte- objekt objekt objekt ... Partition1 Partition0 Start I/O Platte Cancel I/O read, write Unload Devices unload driver Verwaltung der Gerätetreiber-Objekte durch I/O-Manager: • Abarbeitung der IRP durch Treiber via Geräteobjekt • Auslagerung von Spezialaufgaben zu anderen Treibern (z.B. PCI-Buskontrolle), die vorher/danach aufgerufen werden Ein- und Ausgabeverwaltung
Synchrone und asynch. Ein- und Ausgabe Synchrone I/O: blockierendes Warten Asynchrone I/O: Nur Einleiten des Auftrags, Ergebnisse später abholen • UnixAsynchroner I/O • nicht-blockierender Modus bei read(), write() • Setzen des I/O auf ein Signal (I/O mit SW-Interrupt), evtl. warten mit sigpause() • WindowsNT • Parameter „overlapped“ bei ReadFile(), WriteFile(), CreateFile(),... + Daten abrufen durch wait(FileHandle) & ReadFile() • Eigene Asynchronous Procedure Calls APC (Ereignisobjekt) für jeden Thread, um mehrfache Nutzung von FileIds zu verhindern • Nutzung von ReadFileEx(), WriteFileEx() mit Abschlußprozedur des Thread + Warten mit SleepEx(), WaitForSingleObjectEx(), WaitForMultipleObjectsEx() Ein- und Ausgabeverwaltung
Treiber Windows NT : Synchroner I/O • Synchrone Ein-/Ausgabe Systemaufruf abschließen und dabei Ergebnis (OK, Fehler) zurückgeben I/O Request Package IRP erzeugen und Treiber aufrufen Interrupt behandeln, in IRP Ergebnis notieren Daten zum Gerät schreiben lt. IRP I/O durchführen, dann Interrupt erzeugen Ein- und Ausgabeverwaltung
Treiber Windows NT: Asynchroner I/O • Phase 1: Auftrag einleiten Systemaufruf abschliessen und dabei Ergebnis (Wartezustand) zurückgeben IRP erzeugen und Treiber aufrufen Wartezustand zurückgeben IRP in Geräte-Warteschlange einreihen Ein- und Ausgabeverwaltung
Treiber Windows NT: Asynchroner I/O • Phase 2: Interrupt Service ISR setzt Interrupt zurück, legt DPC-Auftrag an, reiht ihn in Warteschlange ein und setzt DPC-Interrupt. ISR wird aufgerufen Interrupt erscheint und ruft dispatcher auf Ein- und Ausgabeverwaltung
Treiber Windows NT: Asynchroner I/O • Phase 3: Auftragsbearbeitung DPC startet nächstes IRP und beendet Service Request DPC wird aufgerufen DPC Interrupt erscheint und ruft dispatcher auf Ein- und Ausgabeverwaltung
Treiber Windows NT: Asynchroner I/O • Phase 4: Datenübertragung zum Benutzer einleiten I/O-Manager notiert APC, um Service Request erst bei Erscheinen des Users zu beenden DPC ruft I/O-Manager auf zum Auftragsabschluss Ein- und Ausgabeverwaltung
Treiber Windows NT: Asynchroner I/O • Phase 5: Datenübertragung zum Benutzer abschliessen • APC-Methode • schreibt Daten in den user space, • setzt Dateiobjekt zu „signalisiert“ • reiht user-APC in Warteschlange ein • löscht IRP Beim nächsten Auftreten des Users erscheint ein APC-Interrupt Die APC-ISR ist beim I/O Manager angesiedelt Ein- und Ausgabeverwaltung
Treiber-Optimierungsstrategien • Pufferung Ungleichmäßiger Datenfluß kann kompensiert werden Ebene Dateitreiber: Dateiänderungen, Aufträge Ebene Gerätetreiber: Blöcke, Spur (vs. Controller-Cache) Konsistenzproblem! • Pufferung in Unix Ser. Geräte: c-List =1 Zeile (RETURN=EOL nötig) Pufferabschaltung durch special file Bit Random access Geräte Liste der Aufträge, Liste der freien Blöcke (Speicherpool) Pufferung der i-nodes: power failure problem. Sync() alle 30 sec & beim shutdown Ein- und Ausgabeverwaltung