
Script Betriebssysteme zur Erlangung des Grades Bachelor im Studiengang Informatik / Computer Science / B.Sc.
DON'T PANIC: Per Anhalter durch das Betriebssystem
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.
—
Woche 1: Das Fundament der informationstechnischen Existenz
Modul 1: Historie und Architektur (Tag 1)
Wie strukturieren wir das Chaos aus Nullen und Einsen? Alles begann mechanisch.
- Konrad Zuse konstruierte mit der Z1 das erste Rechenwerk, das voll auf der Grundlage des Dualsystems arbeitete.
- Die Z22 war später der erste Röhrenrechner der Zuse KG, in dem Programme direkt in der Maschine gespeichert werden konnten.
- Die erste Computergeneration (1945-1955) besaß gar kein Betriebssystem, programmiert wurde direkt mit Steckbrett oder Lochkarte.
- Danach kam die Stapelverarbeitung (Batch-Betrieb) der zweiten Generation, bevor die dritte Generation den Dialogbetrieb und Multiprogramming einführte.
Architektur des Kernels:
- Die Monolithische Architektur: Alle Komponenten sind starr zu einem homogenen Gebilde zusammengefügt. Das bringt extrem hohe Effizienz, auf Kosten der Flexibilität. Linux nutzt diese monolithische Architektur.
- Die Mikrokern Architektur: Der Kernel verfügt über deutlich weniger Funktionen (meist nur Speicher- und Prozessverwaltung) als ein Monolith. Er wird vor allem bei Echtzeitbetriebssystemen eingesetzt.
- Mehrschichtige Architektur: Das System wird in funktionelle, hierarchische Schichten oder Schalen getrennt, die mit unterschiedlichen Privilegien ausgestattet sind.
Modul 2: Prozesse, Threads und die galaktische Bürokratie (Tag 2)
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:
- WARTEND (rechenbereit): Der Prozess wartet auf die Zuteilung eines Prozessors.
- LAUFEND (rechnend): Der Prozess ist aktuell einem Prozessor zugeordnet und läuft ab.
- UNTERBROCHEN: Der Prozess wurde durch einen anderen Prozess unterbrochen.
- BLOCKIERT: Der Prozess wartet auf ein Ereignis (z. B. I/O).
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.
Modul 3: Prozesskommunikation, Hierarchien und Deadlocks (Tag 3)
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:
- Gemeinsamer Speicher: Prozesse teilen sich Datenbereiche und Variablen.
- Pipes: Direkte Datenkanäle zwischen zwei Prozessen – einer schreibt, der andere liest.
- Signale: Ereignisse, die einen Software-Interrupt erzeugen.
- Prozedurfernaufrufe (RPC): Ein Prozess ruft eine Prozedur auf, die in einem anderen Prozess liegt.
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).
Modul 4: Speicherverwaltung & Der Unwahrscheinlichkeitsdrive (Tag 4)
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.
- Beim Paging wird der virtuelle Adressraum in „Seiten“ (Pages) unterteilt. Die korrespondierenden Einheiten im physikalischen Speicher heißen Seitenrahmen.
- Die Umrechnung erledigt die Memory Management Unit (MMU).
- Ein Translation Look-aside Buffer (TLB) speichert die zuletzt verwendeten Umrechnungen zwischen – ein enormer Geschwindigkeitsvorteil.
- Alternativ (oder ergänzend) gibt es das Segmentieren, bei dem der logische Adressraum in Abschnitte variabler Größe (z. B. für Unterprogramme) geteilt wird. Die logische Adresse besteht dann aus Segment-Nummer und Offset.
Modul 5: Eingabe, Ausgabe und Geräte (Tag 5)
Peripheriegeräte werden in das Dateisystem eingebunden und aus Benutzersicht meist wie Dateien behandelt. Wir unterscheiden:
- Block Devices: Blockorientierte Geräte wie Festplatten, die Daten nur in Form von Datenblöcken fester Länge verarbeiten.
- Character Devices: Zeichenorientierte Geräte wie Terminals, die einen Datenstrom aus einzelnen Bytes verarbeiten.
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.
—
Woche 2: Dateisysteme, Cluster und die Zukunft
Modul 6: Dateisysteme - Everything is a File (Tag 6)
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).
- Ein INode enthält Informationen über Eigentümer, Zugriffsberechtigungen und Attribute.
- Er hat 13 Einträge zur Adressierung. Die ersten 10 zeigen direkt auf Datenblöcke.
- Der 11. Eintrag zeigt auf einen INode, der weitere Blöcke adressiert (einfach indirekt). Eintrag 12 ist doppelt indirekt, der letzte dreifach indirekt.
Windows (NTFS): NTFS nutzt eine Master File Table (MFT).
- Jede Datei besitzt hier einen Eintrag.
- Bei kleinen Dateien werden alle Attribute (inklusive der Daten) direkt innerhalb des MFT-Eintrags abgelegt.
- Bei großen Dateien enthält der Eintrag den Wurzelknoten eines B-Baums, dessen Blätter auf die Dateibereiche (Extents) verweisen.
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.
Modul 7: Linux, GNU und die Open-Source-Galaxis (Tag 7)
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:
- Linux: Extrem ressourcenschonend (eine GUI ist optional), sehr sicheres Multiusersystem, extrem konfigurierbar. Alle Sourcen sind frei verfügbar.
- macOS X: Basiert auf einem Unix-Derivat (Darwin/Mach), glänzt durch Hardwarebindung und Multimedia-Integration.
- Windows: Gigantische Verbreitung und riesige Software-Auswahl. Es ist stark von Microsoft getrieben, anfälliger für Viren und oft schwieriger in tiefen Kernelsystemen zu debuggen.
Modul 8: Verteilte Systeme & Cluster (Tag 8)
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:
- HA Cluster (High Availability): Ein Knoten ist aktiv, der andere passiv. Sie tauschen „Heartbeat“-Signale aus. Fällt der aktive Knoten aus, übernimmt der passive. Um den gefährlichen „Split-Brain“-Zustand zu verhindern, schießt der passive Knoten den defekten Partner vor der Übernahme über STONITH (Shoot The Other Node In The Head) hardwareseitig ab.
- HPC Cluster (High Performance Computing): Hier werden Jobs durch ein Decomposition-Programm in kleine Teile zerlegt und parallel auf mehreren Rechenknoten ausgeführt. Die Kommunikation erfolgt meist via MPI (Message Passing Interface).
- Load Balancing Cluster: Clientanfragen werden durch einen Loadbalancer an den Serverknoten mit der voraussichtlich besten Performance verteilt.
Modul 9: Grid & Cloud Computing (Tag 9)
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:
- IaaS (Infrastructure as a Service): Der Anbieter stellt Speicherplatz, Server und Rechenkapazität bereit.
- PaaS (Platform as a Service): Bereitstellung einer transparenten Entwicklungsumgebung (z.B. Webserver) zum Testen und Hosten von Apps.
- SaaS (Software as a Service): Der Anbieter hostet eine vollständige Software-Applikation; der Anwender benötigt nur noch einen Web-Browser.
Die Bereitstellung erfolgt über Private Clouds (nur für interne Unternehmenszwecke), Public Clouds (öffentlich verfügbar) oder als Hybrid Cloud.
Modul 10: Embedded Systems & Organic Computing (Tag 10)
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:
- selbst-konfigurierend
- selbst-optimierend
- selbst-heilend
- selbst-schützend
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.



