530 likes | 662 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 Betriebssysteme: 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 Betriebssysteme: 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 Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Ein-/Ausgabeschichten: Unix • Stream –System: Einschalten von Filterschichten Betriebssysteme: 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 Betriebssysteme: 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) Betriebssysteme: 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() Betriebssysteme: Ein- und Ausgabeverwaltung
FRAGEN Welche beide Gerätearten kennt Unix? Wodurch unterscheiden sie sich? Wieviele I/O-Schichten hat Windows NT? Antwort Dies ist dynamisch und hängt von dem I/O-Auftrag ab. Antworten Zeichenorientierte (characterdevices) und blockorientierte (block devices) Geräte. Sequentielle vs. random accesEin/Ausgabegabe Betriebssysteme: Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Festplatten • Magnetplatten • Schreib/Leseköpfe • Controllerelektronik Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Festplattenmodell Gesamtzeit T= tS + + tRlin. Funktion in k • mittlere ZugriffszeittS (averageseek time) pro Spur • mittlere WartezeittD(rotationaldelay) pro Sektor, max. tR • TransferzeittTfü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. Betriebssysteme: Ein- und Ausgabeverwaltung
Festplattenmodell: Bus-Parallelaktivität Betriebssysteme: 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 Betriebssysteme: 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 gewünscht • schnelles Dateisystem (ca.10-fach) • geringerer Platzbedarf (20%) • RAM nicht direkt adressierbar (z.B. MS-DOS, 32 Bit BS-ab 4GB) • robuster mobiler outdoor-Rechner (Erschütterungen) Betriebssysteme: Ein- und Ausgabeverwaltung
DRAM, Nand-FLASH SSD und HD-Speicher • Preisentwicklung $ pro GByte SSD Festplatte Preisverfall HD: ~45% pro Jahr, Flash: >50% pro Jahr Betriebssysteme: Ein- und Ausgabeverwaltung
Solid State Disks SSD schnell kompatibel durch gleichen Formfaktor (2,5“) kompatibel durch gleiche Schnittstelle bzw. Anschluss (SATA) Betriebssysteme: Ein- und Ausgabeverwaltung
SSD RAM-Disks • Lösungen • wearlevel-Algorithmen: Gleichmäßiges Beschreiben (Abnutzung) aller Zellen: interne Nutzungsverteilung und Reserveeinsatz durch Controller • echtes Löschen (BS-TRIM, internes garbagecollection) ist parallel zum Schreiben auf anderen Zellen • Kein externes garbagecollection(Defragmentierung) des Speichers • Häufig beschriebene Bereiche (Systemrettung, Hibernate, swap) nichtauf SSD (z.B. /user, /tmp), sondern nur readonly-Programmanteile. • Cache-Funktionen sind unnötig: Bootoptimierung, SuperFetch, Prefetch für SSD abschalten • Probleme und Nachteile • Nur begrenzte Anzahl von Schreibzyklen möglich: 3.000-10.000, max 1Mio. • Extra Löschzyklus nötig • Interne Nutzungsverteilung: kein sicheres Löschen mögl.(Datenschutz?) Betriebssysteme: Ein- und Ausgabeverwaltung
Geräteschnittstellen: I/O mapping • Keine dedizierten I/O-Kanäle, sondern I/O-mapping (memorymapping) 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Geräteschnittstellen • Beispiel: Standard PC Hardware reale I/O-Adressen Betriebssysteme: Ein- und Ausgabeverwaltung
Beispiel Parallel Port - Datenpuffer Daten Register Byte Adresse: IOBase+0(read+write) Betriebssysteme: Ein- und Ausgabeverwaltung
Beispiel Parallel Port - Statusregister Status-Register IOBase+1 (Read Only) Betriebssysteme: Ein- und Ausgabeverwaltung
Beispiel Parallel Port - Befehlsregister Control Register Adresse: IOBase+2 (read+write) Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Geräteschnittstellen: PC IRQs Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Geräteschnittstelle: Serielle Geräte Sequentielles Read/Write ohne Adressinformation (Terminals, Zeilendrucker, Tastatur) Register • Kontrollregister Übertragungsgeschwindigkeit, synchron/asynchron, .. • Eingaberegister (readonly) zuletzt empfangenes Zeichen • Ausgaberegister (writeonly) zu sendendes Zeichen • Interruptsystem Interrupt auslösen nach jedem gesendeten/empfangenem Zeichen Flußsteuerung: Hardware(RS232) oder Software (XON/XOFF) Betriebssysteme: Ein- und Ausgabeverwaltung
Geräteschnittstellen: Initialisierung • Problem: zentrale Koordination der I/O-Adressen, Pufferadressen, Interrupt-Nummern • Lösung: Plug-and-PlayPnP • Erfassung aller Geräte (Hersteller Id, GeräteId, Gerätenamen, Anforderungen) • Auslegung der Listen für Adressen und Interrupts unter Berücksichtigung der legacydevices • Einstellen der Geräte entsprechend der Liste BIOS: Basic Input-Output System (On-board-Betriebssystem) Erstellung einer Liste ESCD extendedsystemconfigurationdata Windows NT: Erstellung einer eigenen Liste bzw. Aufsetzen auf der vorigen Liste Unix (Linux): Aufsetzen auf der ESCD NEU: Unified Extensible Firmware Interface UEFI Betriebssysteme: Ein- und Ausgabeverwaltung
Geräteinitialisierung: PnP auf PCI • PCI-Bus Spezifikation Adressplätze für Slots Windows PCI-DeviceId: DID&VID&SID&SVIDAuslesen. 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 Betriebssysteme: 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. Betriebssysteme: Ein- und Ausgabeverwaltung
FRAGEN • Wozu gibt es das I/O mapping (memory-mapping) - Schnelleres I/O ? Direkte Verbindung über I/O-Kanäle ? Einfachere Programmierung ? I/O-Registeradressen (Befehlsregister, Kontrollregister, Datenregister) Interruptnummer in der Interrupt-Vektortabelle Jedes Subsystem benötigt zwei Arten von Angaben, um als memory-mappeddeviceangesprochen werden zu können. Welche? Betriebssysteme: Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber Betriebssysteme: 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 ofInexpensiveDisks • Multiple Festplatten = 1 großer virtueller Plattenspeicher Vorteile: • Schnelligkeit durch paralleles Lesen • Potentielle Fehlertoleranz • Inkrementelle Speichererweiterung möglich Beispiel: RAID 0 Partition = Streifen (Schnelligkeit),z.B. 64kB Datei Betriebssysteme: 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 Betriebssysteme: 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 Disk 1 Wort0 Wort1 … Wort6 Wort7 .. . Disk 2 ... ... ... ... Daten ... .. . 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! Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Ausfallwahrscheinlichkeiten • Berechnung der System-Ausfallwahrscheinlichkeit Aufgabe: 2 Festplatten, RAID 0 P(Ausfall einer Platte) = 0,1 [pro Zeiteinheit] F1 F2 RAID 0 = striping Systemausfall, wenn mind. 1 Platte defekt. P(Ausfall) = ? Also: P(Ausfall) = 0,01+0,09+0,09 = 0,19 Betriebssysteme: Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber: Unix und NT Betriebssysteme: 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 Betriebssysteme: 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 Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Treiberschnittstelle: Windows NT Treiberfunktionen • Initialisierungsprozeduren(loaddriver, DriverEntry, AddDevice) Treiber+Deviceobjekt-Erzeugung durch I/O-Manager, Initialisierung des Treibers • Abschlußprozedur(unloaddriver) Freigabe von Puffern, handles, etc. für I/O-Manager • Gruppe von Service-Funktionen (dispatchroutines) 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 (DeferredProcedure Call) Datentransfer abschließen, nächsten Auftrag holen, ... • Prozedur, um den Datentransferabzuschließen (completionroutine) Info überErfolg, Fehler, Abbruch an aufrufenden Treiber • Eine fehlernotierende Prozedur (errorlogging) Auftrag an I/O Manager zur Fehlerprotokollierung Betriebssysteme: 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 Betriebssysteme: 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() Betriebssysteme: 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 Betriebssysteme: Ein- und Ausgabeverwaltung
Treiber-Optimierungsstrategien Pufferung in WindowsNT • Cache Manager: memory mapping (section objects), autom. Verwaltung durch paging des Virtual Memory Managers • Integration serieller Ein- und Ausgabe von Windows 3.1 Win 3.1 Input Windows NT WOW Betriebssysteme: Ein- und Ausgabeverwaltung
Energieverwaltung I/O-Schichtung Gerätemodelle RAID-Konfigurationen Treiber Betriebssysteme: Ein- und Ausgabeverwaltung