Betriebssystem-Architekturen Prof. Dr. Margarita Esponda Freie Universität Berlin Betriebssystem-Architekturen Monolithische Systeme Mikrokernel-Architekturen Hybride-Architekturen Systeme mit Objektorientierten Techniken Virtuelle Maschinen M. Esponda-Argüero Betriebssystem-Architektur Die Anforderungen an ein Betriebssystem können sehr unterschiedlich sein. Ein Echtzeit-Betriebssystem für ein kleines Gerät unterscheidet sich sehr stark von einem Server-Betriebssystem, das zum Beispiel Informationen in einer Datenbank sucht. Was soll das Betriebssystem leisten? Policy Wie soll alles implementiert werden? Mechanism M. Esponda-Argüero Betriebssystem-Architektur Wenn die Anforderungen (Policy) getrennt von der Implementierung (Mechanism) sind, gewinnt man an Flexibilität. Im schlimmsten Falle führt jede Veränderung der Anforderungen zu einer Veränderung der Implementierung. M. Esponda-Argüero Betriebssystem-Architektur Viele kommerzielle Betriebssysteme hatten am Anfang keine richtige Struktur, weil Betriebssysteme mit sehr starken Hardware-Einschränkungen implementiert werden mussten. - sehr wenig Hauptspeicher - keine Festplatte - langsame Prozessoren - Assembler-Programmierung Beispiel: MS-DOS M. Esponda-Argüero Einfache Betriebssystemstruktur Beispiel: MS-DOS Disk Operating System 1981 Grundlegende Ein-/AusgabeFunktionalität "Basic Input/Output System" - Einbenutzer-System "single-user" - single-task ⇒ kein Scheduler - keine Vernetzung - keine virtuelle Speicher - kein Sicherheits-System Silberschatz M. Esponda-Argüero Betriebssystem-Architektur Erste Betriebssysteme, die nicht nur im Assembler geschrieben worden sind: Master Control Program (MCP) Burroughs 1961 Executive Systems Programming Language (Erweiterung von Algol) Open Source Virtuelle Speicher MULTICS MIT PL/1 Modularisiert Multitasking (time-sharing) single level store (mapped segments) dynamische Bindung (dynamic linking) on-line-Konfigurierung Multiprozessor-System Sicherheitssystem Hierarchisches Dateisystem Fernando J. Corbató sehr innovativ! UNIX Bell Labs 1964 - 2000 C Einfachheit M. Esponda-Argüero Schichtenstruktur Hier versucht man das Betriebssystem in verschiedenen Schichten zu organisieren, die von primitiven Funktionen zu komplexeren Funktionen gehen. Probleme • Effizienz Silberschatz • Klassifizierung der verschiedenen Schichten M. Esponda-Argüero Betriebssystemarchitektur Monolithische Systeme Die häufigste Struktur von Betriebssystemen ist die monolithische Struktur. Das Betriebssystem ist als eine Menge von Prozeduren realisiert. Jede Prozedur kann von jeder anderen aufgerufen werden. Die meisten monolithischen Betriebssysteme haben eine sehr einfache Struktur. Linux wird als monolithisches System eingeordnet. M. Esponda-Argüero Einfaches Monolithisches Betriebssystem Benutzerprogramme Programm1 Programm2 Systemaufruf . . . . . ... Programm3 . . . Kernel-Aufruf Dienstprozedur1 Utility-Prozedur1 Dienstprozedur2 Utility-Prozedur2 . . . . . . Dienstprozedur3 Utility-Prozedur3 Main-Prozedur Kernel-modus M. Esponda-Argüero Mikrokernel-Architekturen In den 80er Jahren wurde der Kernel von Unix-Betriebssystemen zu groß und komplex. In einigen Betriebssystemen wird versucht so viel Funktionalität wie möglich außerhalb des Kernels zu verlagern, so dass ein minimaler Mikrokern übrig bleibt. Die Funktionalität wird durch Server-Prozesse durchgeführt und der Mikrokern muss nur die Kommunikation zwischen Client- und Server-Prozessen durchführen. Carnegie Mellon University entwickelte 1985-1994 das Mach Betriebssystem. M. Esponda-Argüero Mikrokernel Bibliotheken Prozess1 (Kunde) … Prozessn (Kunde) Dateiverwaltung Server Grundfunktionen zur Synchronisation und Kommunikation Mikrokernel Netzwerk Server … Gerätetreiber Server Funktionen zur Speicherund Prozessverwaltung Usermodus Kernelmodus Hardware M. Esponda-Argüero Mikrokernel Eigenschaften: - Bessere Modularisierung - Mikrokernel mit stark reduzierter Funktionalität - minimale Prozessverwaltung - minimale Speicherverwaltung - Hauptaufgabe ist die Kommunikation mittels Nachrichtenverkehr Vorteile: - übersichtlicher - flexibler Problem: ACM - Kommunikations-Overhead M. Esponda-Argüero Mach-Betriebssystem 1985-1994 Carnegie Mellon University Ersetzung des BSD-Kernel Die Probleme wurden größer: 1990 60% Wachstum der CPU-Leistung 7% Verbesserung der Speicher-Zugriffe 1997 Richard Rashid 50% langsamer als UNIX Probleme innerhalb der IPC-Operationen - Menory-Mapping - Kontrolle von port-Zugriffsrechten - Nachrichten-Validierung M. Esponda-Argüero Mach-Betriebssystem Mac OS X Anwendungsbereich gemeinsame Dienste KernelBereich Beispiele BSD Mach QNX (Echtzeitbetriebssystem) Darwin (Mac OS X Kernel) Interessante Beispiele: Windows NT 4.0 Windows XP M. Esponda-Argüero MULTICS UNICS UNIX 1 UNIX 6 UNIX Syst. III BSD-Unix Minix Xenix BSD-4.2 Linux BSD-4.3 Mach Next GNU Hurd Mac OS X Linux 2.6 Suse Darwin www.javipas.com/wp-content/unix_desktop_macosx_1600x1200.jpg Devian Ubuntu Monolithisch vs. Mikrokernel vs. Hybride-Systeme System Call Applications VFS IPC, File System Application IPC Device Server File Server VM, Scheduling, Basic IPC, … Hardware Hardware Monolithisch Mikrokernel UNIX Server File Server UNIX Server Application IPC Scheduler, Virtual Memory Device Drivers, Dispatcher … Applications Applications Device Server VM, Scheduling, Basic IPC, … Hardware Hybride-Kernel M. Esponda-Argüero Objektorientierte Struktur Modernere Lösung • Modularisierte Struktur. • Module werden am Anfang und zur Laufzeit dynamisch geladen. • Es gibt einen zentralen Kernel (core kernel) und verschiedene ladbare Module. • Alle Module definieren eine saubere Schnittstelle. • Das zentrale Modul kann beliebige Module laden und problemlos und effizienter mit allen Modulen kommunizieren (ohne Nachrichtenverkehr). • Höhere Schichten können Klassen aus tieferer Schicht erweitern. M. Esponda-Argüero Mikrokernel + Objektorientierte-Techniken Die Forschung geht weiter, weil Mikrokernel leicht zu erweitern, einfacher zu portieren, und sicherer sind. Optimierungen im Speicherverwaltung-Bereich Mikrokernel sind besonders interessant für die Entwicklung von Verteilten Betriebssystemen Plan 9 2K Inferno The Sprite OS Mach AgentOS WebOS Bell Labs UIUC Vita Nuova Berkeley CMU UCI Berkeley M. Esponda-Argüero Struktur mit objektorientierten Programmiertechniken Solaris Schedulerklassen Gerätetreiber Dateisysteme Verschiedene Dienste Core Kernel Streamming Systemaufrufe Ausführbare Formate Das Mac OS X Betriebssystem hat eine hybride Struktur, die Mikrokern und objektorientierte Programmiertechniken kombiniert. M. Esponda-Argüero Symbian OS Geschichte • Es beginnt mit der Entwicklung der Handheld-Geräte (PDAs) Ende der 1980er 32-Bit-EPOC-Plattform entwickelt für PDAs Echtzeitperformance einer SmartphonePlattform Symbian OS • Kommunikation als zentrale Aufgabe • Minimale Hardwareabhängigkeit M. Esponda-Argüero Ergebnis: Symbian OS • modernes 32-Bit Betriebssystem • objektorientiert • mit einer Mikrokernelarchitektur • hoher Modularisierungsgrad und Plattformunabhängigkeit • Client/Server-Architektur (EPOC Engine-Modell) • ein weiches Echtzeitsystem ( für Multimedia ) • unterstützt Desktop-Funktionalität wie - Multitasking, Multithreading - erweiterbares Speichersystem • effiziente Kommunikation • sehr verbreitet in den Smartphones • 2008 kaufte Nokia Symbian • Ankündigung, dass Symbian OS 2009 open source werden soll M. Esponda-Argüero Objektorientiert • Das Symbian-Betriebssystem wurde von Anfang an objektorientiert konzipiert. • Die gesamte Nutzung der Systemaufrufe und Kern-Funktionen läuft über Schnittstellen. • Der Kern stellt Kerndienste nur über Objekte zur Verfügung. • Die Benutzung von Kernobjekten verläuft über Handles. • Betriebsmittelschutz wird durch die Belegung von Objekten realisiert. • Die Details der Systemimplementierung bleiben vor Benutzerprogrammen verborgen. M. Esponda-Argüero Mikrokerndesign • Das Symbian OS wurde als ein mikrokernbasiertes Betriebssystem entwickelt. • Im Kern gibt es nur eine minimale Anzahl von Systemfunktionen und Daten. • Der Zugriff auf Systemressourcen erfolgt nur durch Verbindungen zu entsprechenden Ressourcen-Servern. • Die meisten Systemfunktionen wurden auf Server des Benutzeradressraums verschoben. • Die Server erhalten Handles auf Systemobjekte und führen mit diesen, wenn nötig, Systemaufrufe aus. M. Esponda-Argüero Mikrokerndesign Anwendungen Usermodus Middleware Server Server Kernelmodus Server Server Server Mikrokern + Gerätetreiber M. Esponda-Argüero Mikrokerndesign Vorteile • Neue Implementierungen für Systemfunktionen können als Systemobjekte entworfen werden und dynamisch in den Kern eingefügt werden. • Dateisysteme z.B. können zur Laufzeit zum Kern hinzugefügt werden. • Mikrokerne sind klein und können sehr schnell gebootet werden. • Server können erst nach Bedarf geladen werden. Nachteile • Ein Systemaufruf benötigt einen Nachrichtenaustausch. • Die Performance leidet durch das KommunikationsOverhead zwischen Objekten. M. Esponda-Argüero Nanokern • Ein Nanokern wurde als Lösung für die Performanceprobleme des Mikrokerns eingeführt. • Der Nanokern stellt die grundlegendste Funktionalität zur Verfügung, die von privilegierten Nano-Threads ausgeführt wird. • Scheduling-Operationen • Synchronisationsoperationen • Unterbrechungsbehandlung • Einfache Synchronisationsobjekte (Mutexe und Semaphore) • Die meisten Funktionen dieser Ebene sind unterbrechbar. M. Esponda-Argüero Symbian-OS-Kernschicht Funktionen mit einer komplexeren Implementierung werden in den Symbian-OS-Kern verschoben. Jede Funktion ist hier eine privilegierte Operation, die aus primitiven Operationen des Nanokerns besteht. • Threads im Benutzermodus • Prozess Scheduling und Kontextwechsel • dynamischer Speicher • dynamisch ladbare Bibliotheken • komplexe Synchronisation • Objekt- und Interprozesskommunikation • andere komplexe Objektdienste • usw. M. Esponda-Argüero Kernstruktur von Symbian OS dia e ltim Telefon-Funktionen Di sp lay Mu Nanokern ts e ck Symbian-OS-Kern So Mikrokern-Server Benutzeranwendungen M. Esponda-Argüero Client-Server-Ressourcenzugriff • Das Mikrokerndesign verwendet ein Client/Server-Modell • Anwendungen sind die Clients • Server sind Programme, die das Betriebssystem laufen lässt, um den Zugriff auf die Ressourcen zu koordinieren. Vorteile passt besser zum objektorientierten Design und zur MikrokernArchitektur Server können sich auf eine Klasse von Ressourcen spezialisieren geringere Entwicklungskosten M. Esponda-Argüero Client-Server-Ressourcenzugriff Das Öffnen einer Datei • Symbian stellt für den Zugriff auf Dateien und Verzeichnisse einen Server bereit (Fileserver) • Der Fileserver stellt eine Anwendungsschnittstelle (Client API) zur Verfügung, um Verzeichnisse und Dateien zu verändern. • Um mit dem Fileserver zu arbeiten, muss zuerst eine Verbindung aufgebaut werden. ... RFs session = iCoeEnv->FsSession(); Rfile file; session.Connect(); ... file.Open(session,_L(Dateiname),DFileRead | EFileWrite); file.Write(_L8( "Bla Bla Bla Bla" )); session.Close(); ... M. Esponda-Argüero Symbian OS M. Esponda-Argüero M. Esponda-Argüero 2011 Symbian Apple Android M. Esponda-Argüero Virtuelle Maschinen Silberschatz Die ersten virtuellen Maschinen wurden 1972 von IBM entwickelt. Die Festplatte wurde in viele virtuelle Mini-Festplatten verwandelt. Virtuelle Maschinen Mehrere Exemplare einer VM laufen auf einer realen Maschine. Verschiedene Betriebssysteme können gleichzeitig ausgeführt werden. Prozesse Prozesse Prozesse Linux MacOS Windows VM1 VM2 VM3 Virtuelle Maschine Implementierung Systemaufrufe Ein- AusgabeOperationen Hardware Beispiel: IBM VM Betriebssystem M. Esponda-Argüero Virtuelle Maschinen Vorteile: • Mehr Schutz durch Isolierung zwischen den virtuellen Maschinen. • Sehr gut für die Forschung und Entwicklung von Betriebssystemen. • Neue Versionen des Betriebssystems können getestet werden. • Software kann sehr leicht in verschiedenen Betriebssystemen getestet werden. Beispiele: • VMware • Java virtuelle Maschine • CLR für die .NET Framework M. Esponda-Argüero VMware-Architektur Quelle: "Operating System Concepts". Silberschatz, Galvin, Gagne Android-Betriebssystem - - - basiert auf Linux Kernel 2.6 - mit Energieverwaltungssystem - verändertes Speicherverwaltungssystem - neue Treiber Dalvik-VM als wichtigste Laufzeitumgebung - Register-Maschine - *.class ⇒ *.dex Jedes Java-Programm läuft in einer eigenen Dalvik-VM - mit eigenem Garbage-Collector M. Esponda-Argüero Android-Betriebssystem Java C/C++ Quelle: www.sigmadesigns.com/uploads/library/android.jpg