Kapitel 8+9
This commit is contained in:
		
							parent
							
								
									b0829dce76
								
							
						
					
					
						commit
						0cd31c8e0f
					
				
							
								
								
									
										
											BIN
										
									
								
								Assets/Betriebssysteme_PCI_Bridge.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Betriebssysteme_PCI_Bridge.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 44 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Betriebssysteme_PCI_Bridge2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Assets/Betriebssysteme_PCI_Bridge2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 44 KiB | 
| @ -86,6 +86,14 @@ author: Robert Jeutter | |||||||
|       - [Freiliste](#freiliste) |       - [Freiliste](#freiliste) | ||||||
|       - [Superblock](#superblock) |       - [Superblock](#superblock) | ||||||
|   - [Datenstrukturen u. Algorithmen des Betriebssystems](#datenstrukturen-u-algorithmen-des-betriebssystems) |   - [Datenstrukturen u. Algorithmen des Betriebssystems](#datenstrukturen-u-algorithmen-des-betriebssystems) | ||||||
|  | - [Netzwerkmanagement](#netzwerkmanagement) | ||||||
|  | - [E/A Systeme](#ea-systeme) | ||||||
|  |   - [Hardware Prinzipien](#hardware-prinzipien) | ||||||
|  |     - [Kommunikationsmuster mit einem Controller](#kommunikationsmuster-mit-einem-controller) | ||||||
|  |     - [E/A- Adressräume](#ea--adressräume) | ||||||
|  |     - [Memory Mapped E/A](#memory-mapped-ea) | ||||||
|  |   - [Software Prinzipien](#software-prinzipien) | ||||||
|  |   - [Zusammenfassung](#zusammenfassung-4) | ||||||
| 
 | 
 | ||||||
| # Einführung | # Einführung | ||||||
| worauf es ankommt: | worauf es ankommt: | ||||||
| @ -2083,3 +2091,211 @@ kontenDB[kontoNr].stand = 0; | |||||||
|       - implizit, im Rahmen des regulären Pagings (Verlassen des working sets) |       - implizit, im Rahmen des regulären Pagings (Verlassen des working sets) | ||||||
|       - explizit, durch msync() |       - explizit, durch msync() | ||||||
| 
 | 
 | ||||||
|  | # Netzwerkmanagement | ||||||
|  | Räumlich verteilte Systeme | ||||||
|  | - Arbeitsplatzrechner, Server, Laptops, Smartphones, dedizierte IT-Geräte | ||||||
|  | - Kommunikationsmedien (LANs, WLANs, WANs; diverse Technologien) | ||||||
|  | 
 | ||||||
|  | Verteilte Dienste und Anwendungen | ||||||
|  | - Email, Web | ||||||
|  | - Netzwerk-Dateisysteme, ssh | ||||||
|  | - Grid-Computing, Cloud-Computing | ||||||
|  | - Energieinfrastrukturmanagementsysteme | ||||||
|  | 
 | ||||||
|  | Rechnergrenzen überschreitende Kommunikation | ||||||
|  | - ein geeignetes Paradigma muss her | ||||||
|  | - Socket: standardisierte Betriebssystem-Abstraktion zur Botschaften basierten Kommunikation in heterogenen verteilten Systemen | ||||||
|  | 
 | ||||||
|  | (Berkeley * -)Sockets | ||||||
|  | - botschaftenbasiert, send/receive-Modell | ||||||
|  | - komplex in der Nutzung, da | ||||||
|  |   1. universell: Implementierungsbasis anwendungsnäherer Modelle (RPC, RMI, Blackboards, Tuple Spaces, ... → Kommunikationsmodelle) | ||||||
|  |   2. problemspezifisch konfigurierbar hinsichtlich | ||||||
|  |     - Synchronität (send/receive-Operationen) | ||||||
|  |     - Verlässlichkeit (Garantien über Zustellung, Reihenfolgeerhalt) | ||||||
|  |     - Kommunikationsdomäne (Internet, lokales System, Novell-Netz, ...) | ||||||
|  | 
 | ||||||
|  | Die Socket-Abstraktion: | ||||||
|  | - Socket: Steckdose ins Netzwerk (Betriebssystem-)Objekt, zu dem gesendet oder von dem empfangen wird) | ||||||
|  | - mit Socket assoziiert: | ||||||
|  |     1. Name (z.B. IP-Adresse in der Internet-Domäne, Port-Nummer) | ||||||
|  |     2. Protokoll (z.B. TCP, UDP) | ||||||
|  | - Kommunikation: über Socket-Paare | ||||||
|  | 
 | ||||||
|  | Betriebssystem-Integration | ||||||
|  | - Socket als Betriebssystem-Abstraktion: Teil der API | ||||||
|  | - BS-Komponente: Integrationsrahmen für Protokollimplementierungen | ||||||
|  | - Darstellung: Rahmen, den Betriebssysteme zur Integration von Protokollen bieten | ||||||
|  | 
 | ||||||
|  | Socketframework des Betriebssystems | ||||||
|  | - auf Anwendungsebene implementierte, Sockets nutzende Protokolle (smtp, http, ftp, ...) | ||||||
|  | - Kommunikationsframework im Betriebssystem | ||||||
|  |     1. Socket-Level | ||||||
|  |     2. TCP/UDP/...-Level | ||||||
|  |     3. IP-Level | ||||||
|  |     4. Netzwerktreiber | ||||||
|  |     5. Gerätecontroller-Hardware ("Netzwerkkarten") | ||||||
|  |     | ||||||
|  |   werden die 7 Ebenen des ISO/OSI-Schichtenmodells implementiert | ||||||
|  | 
 | ||||||
|  | Zusammenfassung | ||||||
|  | - Betriebssystem-Abstraktion zur (Rechnergrenzen überschreitenden) Kommunikation | ||||||
|  | - botschaftenorientiertes Kommunikationsmodell | ||||||
|  | - vielfältig konfigurierbar (Protokolle, Verlässlichkeit, Synchronität, ...) | ||||||
|  | - weitgehend unabhängig von Netzwerk-Technologien | ||||||
|  | - als Betriebssystem-Abstraktion Teil der API | ||||||
|  | - Betriebssystem-Komponente: Integrationsrahmen für Protokollimplementierungen | ||||||
|  | 
 | ||||||
|  | # E/A Systeme | ||||||
|  | 85% der Ausfälle heutiger Standard-Betriebssysteme haben ihre Ursache im E/A-System! | ||||||
|  | 
 | ||||||
|  | Programmierung eines Plattenlaufwerks | ||||||
|  | - Geräteschnittstelle | ||||||
|  |   - ein Bündel von Steuerungs-, Status-, Adress- und Datenregistern | ||||||
|  |   - erreichbar über bestimmte (s.u.) Adressen | ||||||
|  | - Typische Operationen | ||||||
|  |   - Start/Stopp/Zustandsabfrage des Spindelmotors | ||||||
|  |   - Positionierung des Lese/Schreibkopfes | ||||||
|  |   - Datentransferoperationen (bspw. Toshiba Laptop-Laufwerk) | ||||||
|  | - Nach Abschluss einer Operation: Ergebnisanalyse | ||||||
|  |   - 23 Status- und Fehlerbits, verteilt über diverse Kontroll- und Statusregister | ||||||
|  |   - Traum eines jeden Softwareentwicklers | ||||||
|  | 
 | ||||||
|  | Umgang damit | ||||||
|  | 1. Kapselung gerätespezifischer Merkmale | ||||||
|  |   - Anzahl, Layout und Adressen der Steuerungs-, Status- und Adressregister | ||||||
|  |   - Gerätekommandos und Timing | ||||||
|  |   - Fehler und Fehlerbehandlung in gerätespezifischen Softwarekomponenten → Gerätemanager („Treiber“) | ||||||
|  | 2. hierauf aufbauende Abstraktionsschichten | ||||||
|  | 
 | ||||||
|  | ## Hardware Prinzipien | ||||||
|  | - Prinzipieller Aufbau von E/A-Geräten: Hardware/Software-Interface (Programmierschnittstelle): Controllerregister | ||||||
|  | - Programmierparadigma: Lesen und Schreiben von Steuerungs- und Datenregistern | ||||||
|  |    | ||||||
|  | ### Kommunikationsmuster mit einem Controller | ||||||
|  | Das Betriebssystem (Gerätemanager) | ||||||
|  | 1. schreibt einen Befehlscode in ein Steuerungsregister | ||||||
|  | 2. schreibt Parameter in Datenregister | ||||||
|  | 3. setzt Interrupt-Enable-Bit des Steuerungsregisters | ||||||
|  | 4. setzt go-Bit des Kontrollregisters | ||||||
|  | Wenn die Operation ausgeführt ist: Die Controller-Hard/Firmware | ||||||
|  | 1. löscht go- und Interrupt-Enable-Bits | ||||||
|  | 2. schreibt Ergebnis/Fehlercode in Statusregister | ||||||
|  | 3. setzt ready-Bit | ||||||
|  | 4. löst (evtl.) Interrupt aus | ||||||
|  | 
 | ||||||
|  | Wie "sieht" ein Betriebssystem diese Geräte-Register? | ||||||
|  | - adressiert: über Arbeitsspeicheradressen | ||||||
|  | - 2 Varianten | ||||||
|  |   - in separatem E/A Adressraum (I/O Address Space) | ||||||
|  |     - Zugriff: über spezielle Operationen (Prozessor-Instruktionssatz) auf | ||||||
|  |     - "I/O-Ports" | ||||||
|  |   - in regulärem physischen Adressraum (Memory Mapped I/O) | ||||||
|  |     - Zugriff: durch Einblendung in regulären virtuellen Adressraum | ||||||
|  |     - Nutzung regulärer virtueller Adressen | ||||||
|  | 
 | ||||||
|  | ### E/A- Adressräume | ||||||
|  | E/A-Adressraumzugriff über 2 (privilegierte!) Prozessorinstruktionen: | ||||||
|  |   - `IN R8, #0x42` liest im E/A-Adressraum das auf Adresse 0x42 liegende Controllerregister `(I/O-Port 42_16)` ins Prozessorregister R8 | ||||||
|  |   - `OUT #0x42,R8` schreibt den Inhalt von Prozessorregister R8 in das im E/A-Adressraum auf Adresse `42_16` liegende Controllerregister | ||||||
|  | 
 | ||||||
|  | Technik: PCI-Bridge | ||||||
|  | - Bridge-Stellung bei Zugriff auf regulären physischen Speicher: | ||||||
|  |    | ||||||
|  | - Bridge-Stellung bei Zugriff auf E/A-Adressen: | ||||||
|  |    | ||||||
|  | - Bridge-Umschaltung | ||||||
|  |   - Benachrichtigen der PCI-Bridge durch eigene Busleitung | ||||||
|  |   - veranlasst durch "IN"- und "OUT"-Instruktionen | ||||||
|  | - Probleme hiermit | ||||||
|  |   - IN/OUT sind Operationen im Prozessorinstruktionssatz | ||||||
|  |     - stehen in höheren Programmiersprachen nicht direkt zur Verfügung | ||||||
|  |     - (Teile der) Gerätemanagementsoftware in nativem Code des Prozessors | ||||||
|  |   - Schutzkonzept des E/A-Adressraums: | ||||||
|  |     - ist die Privilegierung der IN/OUT-Operationen (IO Privilege Level) | ||||||
|  |     - extrem grobgranular: | ||||||
|  |       - jeder Gerätemanager hat Zugriff auf sämtliche Geräte | ||||||
|  |       - keine Isolation nicht vertrauenswürdiger Gerätemanager | ||||||
|  |       - keine Fehlerisolation | ||||||
|  |       - nicht sicher, nicht robust | ||||||
|  | 
 | ||||||
|  | ### Memory Mapped E/A | ||||||
|  | Controllerregisterzugriff über reguläre physische Arbeitsspeicheradressen | ||||||
|  | 
 | ||||||
|  | Schutzkonzept | ||||||
|  |   - Abbildung verschiedener Geräte auf verschiedene Seiten des PA | ||||||
|  |   - Abbildung dieser Seiten in die verschiedenen privaten VAe der Gerätemanager | ||||||
|  |     - Isolation nicht vertrauenswürdiger Treibersoftware | ||||||
|  |     - Robustheit, Sicherheit, kleine TCB (Mikrokernarchitekturen!) | ||||||
|  | 
 | ||||||
|  | Technik | ||||||
|  | - Zugriff auf Controllerregister: | ||||||
|  |   - Konfiguration der PCI-Bridge beim Booten: "alle Adressen > 0xFF00... sind E/A-Register" | ||||||
|  | - E/A-Controllerregister sind hier Teil des Arbeitsspeichers | ||||||
|  |   - Arbeitsspeicher: unterliegt i.A. Caching-Mechanismen | ||||||
|  |   - MMU: muss „nicht cachebare Seiten“ kennen (Cache bekommt Veränderungen der Controllerregister durch Gerät nicht mit!) | ||||||
|  | - Varianten in der Praxis | ||||||
|  |     1. reiner E/A-Adressraum | ||||||
|  |     2. reine memory mapped I/O | ||||||
|  |     3. Hybridansätze (z.B. Pentium-Architektur): sowohl als auch | ||||||
|  | 
 | ||||||
|  | ## Software Prinzipien | ||||||
|  | - E/A-Operationen dauern – vergleichsweise – lange | ||||||
|  |   - Wartesituationen | ||||||
|  | - ökonomische Überbrückung | ||||||
|  |   - Prozessor: führt andere Aktivitäten durch | ||||||
|  | - am Ende einer E/A-Operation | ||||||
|  |   - Prozessor: erhält Nachricht (Interrupt) | ||||||
|  |   - von E/A-Controllern erzeugt | ||||||
|  |   - über Kommunikationsbusse dem Prozessor zugestellt, dort | ||||||
|  |     - asynchrone Unterbrechung des regulären Prozessablaufs | ||||||
|  |     - Start der ISRs der Gerätemanager | ||||||
|  | 
 | ||||||
|  | Gerätemanager ("Treiber") | ||||||
|  | - gerätespezifische Software mit direktem Zugriff auf HW-Ressourcen | ||||||
|  | - Komponenten: | ||||||
|  |     1. Auftragsannahme | ||||||
|  |       - Schnittstelle zu höheren BS-Ebenen (Reader/Writer-Queues) | ||||||
|  |       - Kommunikation mit Gerät (Controller-HW): Auftragserteilung | ||||||
|  |     2. Ergebnisanalyse (ISR) | ||||||
|  |       - Kommunikation mit Gerät (Controller-HW): Interruptbehandlung | ||||||
|  |       - Kommunikation mit höheren BS-Ebenen: Ergebnisrückgabe | ||||||
|  | 
 | ||||||
|  | BS-Integration | ||||||
|  | - im Maschinenraum | ||||||
|  | - Integrationsrahmen für gerätespezifische Software | ||||||
|  | 
 | ||||||
|  | In heutigen Standardbetriebssystemen | ||||||
|  | - nehmen Gerätemanager ca. 80% der Distributionssoftware ein | ||||||
|  |   - Hardware spezifische Konfiguration | ||||||
|  | - liegt die Ursache ca. 85% aller Systemausfälle in (Fremd-) Gerätemanagern: | ||||||
|  |   - Komplexität der Programmierung: zeitliche Bedingungen, Parallelität, Synchronisation | ||||||
|  |   - Diversität des Gerätezoos | ||||||
|  |   - Diversität der HW- und Gerätemanager-Hersteller | ||||||
|  |   - Innovationsfreudigkeit und time-to-market → Bananensoftware | ||||||
|  | - Massive Robustheits- und Sicherheitsprobleme ! | ||||||
|  | 
 | ||||||
|  | Problemfolgen | ||||||
|  | 1. Management der Schwachstellen | ||||||
|  |     - Treiberzertifizierung (automatisierte Korrektheitsanalysen) | ||||||
|  |     - Flicken "42 wichtige Updates stehen bereit" ... | ||||||
|  | 2. Architekturprinzipien robuster und sicherer Systeme (→ Kap. 7) | ||||||
|  |     - Isolation nicht verifizierter verifizierbarer (Treiber-)Software | ||||||
|  |     - Ausfallerkennung und -behandlung | ||||||
|  |       - Treiberwrapping, micro-reboot | ||||||
|  |       - Mikrokernarchitekturen | ||||||
|  | 
 | ||||||
|  | ## Zusammenfassung | ||||||
|  | HW-Programmierung mittels | ||||||
|  | - Controller-Register | ||||||
|  |   - in E/A-Adressräumen | ||||||
|  |   - im Arbeitsspeicher (Memory Mapped E/A) | ||||||
|  |   - Isolation, Robustheit, Sicherheit | ||||||
|  | - Interruptsystem | ||||||
|  |   - asynchrone Benachrichtigungen | ||||||
|  | 
 | ||||||
|  | Software-Prinzipien | ||||||
|  | - Gerätemanager (Treiber) | ||||||
|  |   - Auftragsmanagement | ||||||
|  |   - ISRs | ||||||
|  | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user