
Script Betriebssysteme zur Erlangung des Grades Bachelor im Studiengang Informatik / Computer Science / B.Sc.
Willkommen, Anhalter! Dieser zweiwöchige Kurs ist euer Handtuch für die Reise durch die Galaxis der Betriebssysteme. Ein Betriebssystem (OS) ist weit mehr als nur Code auf einem Bildschirm – es ist der ultimative Vermittler zwischen Benutzer, Anwendungen und der Hardware.
Ohne ein Betriebssystem müsstet ihr jede Spannungsänderung im Silizium selbst steuern – eine Aufgabe, die selbst die Geduld eines Vogonen überstrapazieren würde. In den nächsten zwei Wochen werden wir die fundamentalen Konzepte entschlüsseln. Die Antwort auf alle Fragen lautet vielleicht 42, aber bis wir dort ankommen, müssen wir verstehen, wie die Frage überhaupt im Speicher abgelegt wird.
—
Wie strukturieren wir das Chaos aus Nullen und Einsen? Alles begann mechanisch.
Architektur des Kernels:
Ein Prozess ist in der Informatik ein Programm, das sich in Befehle (Codebereich) und Programmdaten gliedert. Ein Thread ist eine Erweiterung dieses Modells – ein „leichtes Programm“, das sich mit anderen Threads die Betriebsmittel teilt, aber einen eigenen Stapelspeicher (Stack) besitzt.
Damit wir nicht Äonen warten müssen, nutzt das OS ein Prozessmodell mit diesen Zuständen:
Ein Scheduler bestimmt, wer rechnen darf. Beim Round Robin (Zeitscheibenverfahren) erhält jeder Prozess eine feste Zeitspanne, bevor er verdrängt wird. Beim Prioritäts-Scheduling wird einem Prozess eine Priorität zugeordnet, wodurch Prozesse niedrigerer Priorität warten müssen. Bei „First come, first served“ wird schlicht derjenige bedient, der zuerst da ist.
Ein Prozess kann einen neuen Prozess starten, wodurch ein „Elternprozess“ und ein „Kindprozess“ entstehen. Wird der Elternprozess beendet, beenden sich normalerweise auch alle seine Kindprozesse.
Prozesse müssen kommunizieren (Inter-Process Communication). Dafür gibt es mehrere Wege:
Wenn Prozesse um Ressourcen kämpfen, droht der Deadlock (Stillstand). Dafür müssen vier Bedingungen erfüllt sein:
1. Mutual Exclusion (wechselseitiger Ausschluss). 2. Belegungs- und Wartebedingung (Prozess kann weitere Betriebsmittel anfordern). 3. Unterbrechbarkeitsbedingung (Betriebsmittel können nicht entzogen werden). 4. Zyklische Wartebedingung (Zyklus im Betriebsmittelgraph).
Der Arbeitsspeicher ist chronisch zu klein. Früher nutzte man Overlay-Verwaltung, bei der der Programmierer sein Programm selbst in Teile (Overlays) spalten musste, die das OS nacheinander lud.
Heute rettet uns der virtuelle Speicher: Der Speicheradressraum des Prozessors wird vom realen Adressraum des Arbeitsspeichers getrennt.
Peripheriegeräte werden in das Dateisystem eingebunden und aus Benutzersicht meist wie Dateien behandelt. Wir unterscheiden:
Die Gerätesteuerung kann programmgesteuert, unterbrechungsgesteuert (Interrupts) oder via DMA (Direct Memory Access) erfolgen. Beim DMA-Betrieb übernimmt eine DMA-Steuerung die Datenübertragung zwischen Hauptspeicher und Peripheriegerät völlig selbstständig, um den Prozessor zu entlasten.
—
Ein Dateisystem muss die physischen Blöcke einer Festplatte in die logische Form einer Datei übersetzen.
Linux/Unix: Unix nutzt zur Adressierung INodes (Index Nodes).
Windows (NTFS): NTFS nutzt eine Master File Table (MFT).
Um Dateien von mehreren Orten zugänglich zu machen, nutzt man Links. Das „symbolic linking“ legt eine spezielle Datei an, die den absoluten Pfadnamen der gelinkten Datei enthält.
Historisch stammt Unix aus den 1960er Jahren, hervorgegangen aus dem System Multics. Ken Thompson und Dennis Ritchie entwickelten die erste Unix-Version und schufen dafür die Sprache C.
1991 initiierte Linus Torvalds den Kernel für Linux. Ein Großteil der grundlegenden Software in Linux (wie C-Compiler oder Shells) stammt aus dem GNU-Projekt. Systemvergleich:
Ein verteiltes System ist laut Andrew Tanenbaum ein Zusammenschluss unabhängiger Computer, der sich für den Benutzer als ein einzelnes System präsentiert. Die bekannteste Architektur ist das Client-Server-Modell, bei dem der Client eine Aufgabe (z. B. Datenbankabfrage) anfordert und der Server diese bereitstellt.
Noch spannender sind Cluster, die vernetzte Computer zu einem mächtigen Gebilde vereinen. Es gibt primär diese Typen:
Wenn der lokale Rechner nicht reicht, wandern wir ins Netz. Grid Computing vernetzt Tausende einzelner Computer zu einem komplexen System mit enormer Rechenleistung. Es gibt z. B. Computer Grids für Rechenkapazität, Data Grids für große verteilte Datenmengen und Application Grids zur Bereitstellung von Software über virtuelle Organisationen.
Cloud Computing treibt dies auf die Spitze. Dienste werden On-Demand abgerechnet („pay per use“). Wir unterscheiden:
Die Bereitstellung erfolgt über Private Clouds (nur für interne Unternehmenszwecke), Public Clouds (öffentlich verfügbar) oder als Hybrid Cloud.
Betriebssysteme der Zukunft steuern nicht nur Desktop-PCs. Embedded Systems verrichten unsichtbar ihren Dienst in Waschmaschinen, Autos oder DVD-Playern. Eines der ersten war der Apollo Guidance Computer für die Mondlandung. Die Elektronik besteht meist aus Mikroprozessoren (wie ARM oder PowerPC) und hochspezialisierten Betriebssystemen wie QNX, VxWorks oder Embedded Linux.
Die absolute Spitze der Evolution bildet das Organic Computing. Systeme werden künftig so komplex, dass sie lebensähnlich („organisch“) reagieren müssen. Sie benötigen „self-x“ Eigenschaften:
Ein „Smart Network“ wird sich spontan vernetzen, Ausfälle erkennen und Aufgaben bei Überlastung autonom neu verteilen.
Quellen & Materialien
Alle Inhalte dieses Kurses basieren auf dem Skript „Betriebssysteme“ der German-Baltic Management School. Zusätzliche Anreicherungen und Strukturierung durch den Kursleiter.