Architekturansätze Sommersemester 2015 Prof. Dr. Peter Mandl Prof. Dr. Peter Mandl Seite 1
Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze 4. Interruptverarbeitung in Betriebssystemen 5. Prozesse und Threads 6. CPU-Scheduling 7. Synchronisation und Kommunikation 8. Speicherverwaltung 9. Geräte- und Dateiverwaltung 10. Betriebssystemvirtualisierung Anwendung 1 Anwendung 2 Anwendung n Dienstverteiler Systemdienste- Schnittstelle Kernel Modul Hardware- Schnittstelle Hardware Prof. Dr. Peter Mandl Seite 2
Zielsetzung Die verschiedenen Architekturen von Betriebssystemen kennenlernen Aspekte der Verteilung von Betriebssystemen und Applikationen kennenlernen Sinn und Möglichkeiten der Virtualisierung von Betriebssystemen und von Cloud Computing kennenlernen Prof. Dr. Peter Mandl Seite 3
Überblick 1. Zugriffsschutz in Betriebssystemen 2. Lokale Architekturen 3. Verteilte Verarbeitung 4. Terminalserver-Betrieb 5. Virtualisierung von Betriebs- und Laufzeitsystemen 6. Cloud Computing Prof. Dr. Peter Mandl Seite 4
Usermodus und Kernelmodus Usermodus (Benutzermodus) - Ablaufmodus für Anwendungsprogramme - Kein Zugriff auf Kernel-spezifische Code- und Datenbereiche Kernelmodus - Privilegierter Modus - Dient der Ausführung der Programmteile des Kernels - Schutz von Datenstrukturen des Kernels Umschaltung über spezielle Maschinenbefehle Aktueller Modus steht in einem Statusregister Prof. Dr. Peter Mandl Seite 5
Hardware-Grundlagen am Beispiel der Intel-Architektur (1) Beispiel: x86-architektur - Schutzkonzept über vier Privilegierungsstufen (Ring 0-3) - Prozess läuft zu einer Zeit in einem Ring - Meist werden aus Kompatibilitätsgründen zu anderen CPUs nur zwei Ringe unterstützt: Ring 0: Kernelmodus (privilegiert, Zugriff auf Hardware möglich) Ring 3: Usermodus (nicht privilegiert) Übergang von Ring 3 nach Ring 0 über privilegierte Operation (int-befehl) Anmerkung: Ab x64/ia64 werden ohnehin nur noch zwei Ringe unterstützt Prof. Dr. Peter Mandl Seite 6
Hardware-Grundlagen am Beispiel der Intel-Architektur (2) Wechsel von Ring 3 nach Ring 0 (Trap, Unterbrechung) mehr dazu in Kapitel 3 Anwendung unbenutzt unbenutzt Kernelmodus Ring 0 Ring 1 Systemcall Usermodus Kernelmodus Aufruf eines privilegierten Befehls Ring 2 Ring 3 (Usermodus) Im Ring 3 ist nicht der komplette Befehlssatz vorhanden Prof. Dr. Peter Mandl Seite 7
Überblick 1. Zugriffsschutz in Betriebssystemen 2. Lokale Architekturen 3. Verteilte Verarbeitung 4. Terminalserver-Betrieb 5. Virtualisierung von Betriebs- und Laufzeitsystemen 6. Cloud Computing Prof. Dr. Peter Mandl Seite 8
Der Betriebssystemkern Der Betriebssystemkern (Kernel, Kern) umfasst wesentliche Dienste des Betriebssystems, die möglichst immer im Hauptspeicher geladen sein sollen Hierzu gehört u.a.: - Prozess- und Prozessorverwaltung - Speicherverwaltung - Dateiverwaltung - Geräteverwaltung (Treibersoftware) - Netzwerkverwaltung Prof. Dr. Peter Mandl Seite 9
Monolithischer Kern Alle Module haben Zugriff auf einen Adressraum und teilen sich diesen (in einem Prozess, Definition später) Anwendung 1 Anwendung 2... Anwendung n Dienstverteiler Systemdienste- Schnittstelle Kernel Modul Hardware- Schnittstelle Hardware Prof. Dr. Peter Mandl Seite 10
Schichtenmodell Verbesserung des monolithischen Kernels: Flexibler und übersichtlicher Anwendung 1 Anwendung 2... Anwendung n Systemdienste- Schnittstelle Schicht 3 Schicht 2 Schicht 1 Hardware Prof. Dr. Peter Mandl Seite 11
Mikrokern (1) Ein moderner Trend in der Betriebssystementwicklung: - Kernel leichter machen - Entlastung durch Übernahme von Funktionalität in Anwendungsprozesse (Serverprozesse), eigene Adressräume - Serverprozesse können sein: Fileserver Memory Server (?)... - Was bleibt ist ein minimaler Mikrokern - Der Mikrokern übernimmt die Abwicklung der Kommunikation zwischen Anwendungsprozessen (Clientprozessen) und Serverprozessen Prof. Dr. Peter Mandl Seite 12
Mikrokern (2) Clientprozesse fordern Dienste über Nachrichten an die Serverprozesse an Mikrokern-Konzept wurde u.a. bei den Betriebssystemen Amoeba (Tanenbaum), Mach und Chorus entwickelt Elementarer Kern ermöglicht verschiedene, darauf aufsetzende Betriebssysteme Performance-Verschlechterung Clientprozess Clientprozess Server- Prozess... Usermodus Service Request Mikrokern Kernelmodus Hardware Prof. Dr. Peter Mandl Seite 13
Unix-Schichtenmodell (klassisch monolithisch) Anwendungsprogramme (vi, sh, sed, ) Weitere Libraries Usermodus C-Library (fopen, exec, socket, calloc, ) System Call Interface Speicherverwaltung Geräteverwaltung Dateiverwaltung Prozessverwaltung Kernelmodus Hardware Prof. Dr. Peter Mandl Seite 14
Linux-Architektur (monolithisch) Anwendungsprogramme (vi, bash, openoffice,.) Weitere Libraries Usermodus C-Library glibc (fopen, exec, socket, calloc, ) System Call Interface (TRAP, CALL, BRK, INT,, je nach Hardware) Kernel (Geräteverwaltung, Dateisystem, Speicherverwaltung, Prozessverwaltung, Netzwerkverwaltung, ) Kernelmodus Hardware Prof. Dr. Peter Mandl Seite 15
Windows-Schichtenarchitektur NT-Dienste: smss, lsass, services, winlogon Usermodus GUI (shell32.dll, ) Dynamische Libraries (ole32dll, ) Subsystem-API (kernel32.dll, ).NET setzt hier auf Prozess der Subsysteme (csrss.exe) Native NT-API (C/C++-Routinen ntll.dl (vgl. libc unter Unix)) CreateProcess, DeleteFile, Wrapper für NT-API-Aufrufe = Win32-API (WinAPI) NTCreateProcess NTCreateFile, Kernelmodus NTOS-Kernschicht (ntoskrnl.exe) in C Systemdienste, Kern, NTOS = ntoskrnl.exe Gerätetreiber NTOS-Ausführungsschicht (ntoskrnl.exe) in C GUI-Treiber Win32k.sys HAL (hal.dll) x64: 1 % Assembler, x86: 2 % Assembler, Rest in C Hardware Geräte, CPU, MMU, Interrupt-Controller, BIOS, Speicher Kernobjekte verwaltet der Object Manager CPU-Scheduler: 75 Kloc Virt. Speicher: 175 Kloc Quelle: Tanenbaum, A. S.: Moderne Betriebssysteme,, 3. aktualisierte Auflage, Pearson Studium, 2009 Prof. Dr. Peter Mandl Seite 16
Architektur von Apple Mac OS X Mac OS X hat einen Hybrid-Kernel Mischung aus MACH und FreeBSD MACH ist ein Microkernel und NeXTStep nutzte MACH-Kernel Entwicklung: - Unix BSD NeXTStep Darwin Mac OS X OS X Kernel heißt XNU (X is not Unix) Abgewandelt auch in ios für Apple iphone, ipad,... Aqua (Grafische Oberfläche) Grafik- Subsystem Carbon Cocoa Java Quartz OpenGL QuickTime Darwin Hardware Programmierschnittstellen Prof. Dr. Peter Mandl Seite 17
Überblick 1. Zugriffsschutz in Betriebssystemen 2. Lokale Architekturen 3. Verteilte Verarbeitung 4. Terminalserver-Betrieb 5. Virtualisierung von Betriebs- und Laufzeitsystemen 6. Cloud Computing Prof. Dr. Peter Mandl Seite 18
Verteilte Systeme Verteilte Betriebssysteme: - Die Mikrokern-Architektur vereinfacht auch eine Verteilung der Serverprozesse auf mehrere Rechner in einem Netzwerk - Ein echt verteiltes Betriebssystem macht die Verteilung der Services im Netz für den Clientprozess transparent - Heute keine Praxisrelevanz Kommunikations-Middleware: - Heutige verteilte Systeme basieren in der Regel auf einer Middleware (Zwischenschicht), die im Usermodus abläuft Meist Nutzung des Client-/Server-Prinzips, aber auch -to- immer mehr verbreitet Prof. Dr. Peter Mandl Seite 19
Client-/Server-Modell Dedizierte Rollen: Client und Server Client und Serverkomponenten sind üblicherweise über ein Netzwerk verteilt Client und Server kommunizieren über Requests Softwarekonzept! Client Server Server Server... Kernel1 Kernel2 Kernel3 Kernel4 Netzwerk Service Request Prof. Dr. Peter Mandl Seite 20
-to--modell Eigenes Betriebssystem auf jedem Keine Rollenaufteilung wie im Client-/Server-Modell Varianten: pur, hybrid, Superpeer (Weiterentwicklung von hybrid) Pur P2P Beispiel: Gnutella Hybrid P2P Beispiele: Napster Superpeer: BitTorrent, Skype Zentraler Server Dienstverzeichnis... Superpeer Verzeichnis Superpeer Verzeichnis Superpeer Information... nutzt Dienst eines anderen s Dienst im Dienstverzeichnis anfragen Prof. Dr. Peter Mandl Seite 21
Middleware Die Kommunikations-Middleware übernimmt die Aufgaben der Client-/Server-Kommunikation (verteilte Anwendung) Verteilt werden Anwendungs-Clients und -Server Jeder Rechnerknoten verfügt über ein komplettes Betriebssystem Client-Prozess Anwendungs- Server 1 Anwendungs- Server 2 Anwendungs- Server 3 Middleware Middleware Middleware Middleware... Kernel 1 Kernel 2 Kernel 3 Kernel 4 Service- Request Service- Request Netzwerk Prof. Dr. Peter Mandl Seite 22
Beispiel: WWW-Anwendung Web-Anwendungen sind auch verteilte Anwendungen und benötigen mehrere Serversysteme - Web-Server - Application Server - Datenbanksystem Web-Client (Browser) erzeugt den Request über HTTP WebClient Kernel Web- Server Middleware Kernel Appl. Server Middleware Kernel Datenbank Kernel 1: HTTP-Request... 2: Service Request Netzwerk 3: DB Request Prof. Dr. Peter Mandl Seite 23
Application-Server-Betrieb (1) In heutigen verteilten Systemen werden statt Transaktionsmonitoren oft auch sog. Application- Server verwendet (auch Middleware) - Derzeit aktuell: EJB Application Server (Enterprise Java Beans) und.net - Stellen auch Plattformen für verteilte Komponentensysteme bereit - Beispiele: Oracle Weblogic AS, JBoss AS, IBM Websphere AS Verteilte Transaktionsverarbeitung ist aber wesentlich komplexer als lokale Transaktionsverarbeitung Prof. Dr. Peter Mandl Seite 24
Application-Server-Betrieb (2) C1 C2 C3... Cn Mit eigenen Betriebssystemen Netzwerk Aufruf Datenbankserver- Betriebssystem K1 K2 K3... Km Anwendungsserver-Betriebssystem Application- Server Datenbanksystem... P1 P2 P3... Pi Prozessbzw. Thread- Pool Datenbankverbindung über das Netzwerk durch Application-Server verwaltet Kx Py Softwarekomponente Prozess/Thread Cx Anwender mit Clientprogramm auf einem Arbeitsplatzrechner Prof. Dr. Peter Mandl Seite 25
Überblick 1. Zugriffsschutz in Betriebssystemen 2. Lokale Architekturen 3. Verteilte Verarbeitung 4. Terminalserver-Betrieb 5. Virtualisierung von Betriebs- und Laufzeitsystemen 6. Cloud Computing Prof. Dr. Peter Mandl Seite 26
Terminalserver: Idee Früher: Anwendungen liefen in der Ablaufumgebung des Mainframes, Terminals waren blockorientiert und dienten nur der Präsentation - Dumme Terminals Heute: Clientrechner sind intelligent und enthalten clientseitige Anwendungskomponentne Probleme: - Verteilung von Programmänderungen auf Clientrechner ist teuer - Leichtere Angriffe auf dezentrale Systeme möglich (Sicherheitsaspekt) -... Terminalserver dienen der Reduzierung der Probleme Prof. Dr. Peter Mandl Seite 27
Terminalserver-Architektur Üblicherweise PCs, sog. Thin-Clients Client- Rechner Client- Rechner Client- Rechner Client- Rechner... TS-Client TS-Client TS-Client TS-Client Netzwerk TS-Server TS-Server TS-Server A1 A2... A2 A1 A2 A3 Server-Rechner Server-Rechner Server-Rechner Serverfarm Ax: Anwendung TS-Client: Clientsoftware des Terminalservers TS-Server: Serversoftware des Terminalservers Prof. Dr. Peter Mandl Seite 28
Überblick 1. Zugriffsschutz in Betriebssystemen 2. Lokale Architekturen 3. Verteilte Verarbeitung 4. Terminalserver-Betrieb 5. Virtualisierung von Betriebs- und Laufzeitsystemen 6. Cloud Computing Prof. Dr. Peter Mandl Seite 29
Was ist Virtualisierung? Allgemeine Definition: - Unter Virtualisierung versteht man Methoden zur Abstraktion von Ressourcen mit Hilfe von Software Virtuelle Maschine verhält sich wie die reale Maschine Diverse Varianten: - Virtuelle Computer: Server- und Desktopvirtualisierung (= Betriebssystem- bzw. Plattformvirtualisierung) - Storage Virtualisierung - Anwendungsvirtualisierung - Virtuelle Prozessumgebungen (Prozessmodell und virtueller Speicher) - Virtuelle Prozessoren: Java Virtual Machine (JVM) - Netzwerkvirtualisierung (vlan) Prof. Dr. Peter Mandl Seite 30
Betriebssystemvirtualisierung Grobes Virtualisierungsmodell mit unterschiedlichen Ausprägungen (Hypervisor Typ 1, Typ2 ) Mehr dazu in später Anwendungsprozesse......... Betriebssystem 1 (Windows Vista) Betriebssystem 2 (Windows 2008)... Betriebssystem n (Linux) Virtuelle Basismaschine = VM-Monitor Hardware Prof. Dr. Peter Mandl Seite 31
Laufzeitsysteme virtualisieren Wird heute immer mehr eingesetzt! Beispiele: - Java Virtual Machine -.NET Common Language Runtime Bytecode wird meist interpretiert Vorteil - Programme werden unabhängig von der Systemplattform Prof. Dr. Peter Mandl Seite 32
Überblick 1. Zugriffsschutz in Betriebssystemen 2. Lokale Architekturen 3. Verteilte Verarbeitung 4. Terminalserver-Betrieb 5. Virtualisierung von Betriebs- und Laufzeitsystemen 6. Cloud Computing Prof. Dr. Peter Mandl Seite 33
Cloud Computing: Grundlegendes Cloud = Rechnerwolke Cloud-Computing-Ansatz: IT-Infrastruktur wird über ein Netzwerk (z.b. Internet) von einem Cloud- Anbieter zur Verfügung gestellt: - Rechenkapazität, Betriebssysteme, Datenspeicher, Software Man unterscheidet aus Betreibersicht: - Private Cloud - Public Cloud - Hybrid Cloud Prof. Dr. Peter Mandl Seite 34
Cloud Computing: Cloud-Dienstmodelle IaaS = Infrastructure as a Service Cloud-Provider bietet Zugang zu virtualisierten Rechnern (inkl. BS) und Speichersystemen Basis ist Betriebssystemvirtualisierung Beispiele: Amazon Elastic Compute Cloud (EC2) PaaS = Platform as a Service - Cloud-Provider bietet Zugang zu Programmierungsumgebungen - Beispiele: Google App Engine, Windows Azure SaaS = Software as a Service - Cloud-Provider bietet Zugang zu Anwendungsprogrammen - Beispiele: Google Docs, Microsoft Cloud Services, Salesforce.com (CRM-System) Prof. Dr. Peter Mandl Seite 35
Überblick Einführung in Computersysteme Entwicklung von Betriebssystemen Architekturansätze 4. Interruptverarbeitung in Betriebssystemen 5. Prozesse und Threads 6. CPU-Scheduling 7. Synchronisation und Kommunikation 8. Speicherverwaltung 9. Geräte- und Dateiverwaltung 10. Betriebssystemvirtualisierung Prof. Dr. Peter Mandl Seite 36