Dies ist eine alte Version des Dokuments!

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 bunter Code auf einem Bildschirm – es ist der ultimative Vermittler zwischen Benutzer, Anwendungen und der fehleranfälligen Hardware[cite: 1].
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, primär am Beispiel des offenen Pinguins (Linux), aber wir werfen auch einen Blick über den Tellerrand zu Windows und macOS[cite: 1].
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 mit dem Abakus und später der Zuse Z1, dem ersten vollautomatischen, programmgesteuerten Rechner der Welt[cite: 1]. Über Röhrenrechner (Z22) und Lochkarten kamen wir zu den ersten Time-Sharing-Systemen wie CTSS und Multics, den direkten Vorfahren von Unix[cite: 1].
Heute unterscheiden wir beim Kern des Systems (Kernel) drei Architekturen[cite: 1]:
- Die Monolithische Architektur: Alle Komponenten (Treiber, Dateisysteme, Speicherverwaltung) sind starr zu einem homogenen Gebilde zusammengefügt[cite: 1]. Dies bringt eine enorm hohe Effizienz[cite: 1]. Linux ist ein solcher Monolith. Wenn ihr später Enterprise-Umgebungen wie Red Hat Enterprise Linux (RHEL 9.2) oder Debian 12 „Bookworm“ administriert, nutzt ihr genau diese Kraft, die durch ladbare Kernel-Module extrem flexibel bleibt.
- Die Mikrokern Architektur: Der Kernel reduziert sich auf das Nötigste (Prozess- und Speicherverwaltung)[cite: 1]. Alles andere läuft im User-Space. Das ist sicherer (ein abstürzender Treiber reißt nicht das System mit), aber durch den ständigen Nachrichtenversand langsamer.
- Mehrschichtige Architektur: Eine funktionelle Trennung in Schichten mit unterschiedlichen Privilegien[cite: 1].
Modul 2: Prozesse, Threads und die galaktische Bürokratie (Tag 2)
Ein Prozess ist die Ausführung eines Programms, bestehend aus Befehlen (Codebereich) und Programmdaten[cite: 1]. Ein Thread hingegen ist ein „leichtes Programm“, das sich mit anderen Threads die Betriebsmittel und den Prozesskontext teilt, aber einen eigenen Stapelspeicher (Stack) besitzt[cite: 1].
Damit wir nicht Äonen auf Berechnungen warten müssen, gibt es das Prozessmodell mit seinen Zuständen[cite: 1]:
- WARTEND: Der Prozess wartet auf die Zuteilung eines Prozessors[cite: 1].
- LAUFEND: Der Prozess ist aktuell einem Prozessor zugeordnet und rechnet[cite: 1].
- UNTERBROCHEN: Der Prozess wurde durch einen anderen Prozess unterbrochen[cite: 1].
- BLOCKIERT: Der Prozess wartet auf ein Ereignis (z.B. I/O)[cite: 1].
Ein Scheduler regelt, wer wann rechnen darf[cite: 1]. Beim Round Robin (Zeitscheibenverfahren) erhält jeder Prozess eine feste Zeitspanne, bevor er verdrängt wird, während beim Prioritäts-Scheduling wichtigere Prozesse bevorzugt werden[cite: 1].
Modul 3: Prozesskommunikation & Hierarchien (Tag 3)
Ein Prozess kann einen neuen Prozess starten (z.B. über den Systemaufruf fork)[cite: 1]. Dieser „Kindprozess“ hat genau einen „Elternprozess“[cite: 1]. Wenn der Elternprozess stirbt, sterben normalerweise auch seine Kinder[cite: 1].
Damit Prozesse nicht im luftleeren Raum agieren, müssen sie kommunizieren (IPC)[cite: 1]:
- Pipes: Direkte Datenkanäle zwischen zwei Prozessen (einer schreibt, einer liest)[cite: 1].
- Gemeinsamer Speicher: Prozesse teilen sich Datenbereiche im RAM[cite: 1].
- Signale: Software-Interrupts, die Prozesse über Ereignisse informieren[cite: 1].
Jeder Prozess hat Rechte. Wichtig ist die Trennung zwischen der realen Benutzer-ID (wer hat den Prozess gestartet) und der effektiven Benutzer-ID (welche Rechte hat der Prozess aktuell)[cite: 1]. Durch das setuid-Bit kann ein Prozess die Rechte des Programmeigentümers annehmen[cite: 1] – ein kritisches Sicherheitskonzept in Unix/Linux.
Modul 4: Speicherverwaltung & Der Unwahrscheinlichkeitsdrive (Tag 4)
Es ist eine universelle Konstante: Der RAM ist immer zu klein[cite: 1]. Statt in Panik zu verfallen, nutzen moderne OS den virtuellen Speicher[cite: 1].
- Der logische Adressraum (auf den das Programm zugreift) ist getrennt vom physischen Adressraum (dem echten RAM)[cite: 1].
- Beim Paging wird der Adressraum in gleich große Seiten (Pages) und Seitenrahmen (Page Frames) unterteilt[cite: 1].
- Eine Memory Management Unit (MMU) rechnet die virtuellen Adressen in physikalische um[cite: 1]. Ein Translation Look-aside Buffer (TLB) dient dabei als ultraschneller Cache für die Adressumrechnung[cite: 1].
- Werden Seiten benötigt, die gerade nicht im RAM liegen, kommt es zum Page Fault, und das OS lädt sie von der Festplatte nach[cite: 1].
Modul 5: Eingabe, Ausgabe und Geräte (Tag 5)
I/O-Geräte werden meist in das Dateisystem eingebunden und wie Dateien behandelt[cite: 1]. Wir unterscheiden grob:
- Block Devices: Blockorientierte Geräte wie Festplatten, die Daten in festen Blöcken verarbeiten und wahlfreien Zugriff erlauben[cite: 1].
- Character Devices: Zeichenorientierte Geräte wie Terminals oder serielle Schnittstellen, die einen kontinuierlichen Datenstrom (Byte für Byte) verarbeiten[cite: 1].
Damit die CPU nicht ständig warten muss („Polling“), arbeiten wir mit interruptgesteuerter E/A oder dem DMA-Betrieb (Direct Memory Access), bei dem der Datentransfer zwischen RAM und Peripherie völlig autark von der CPU abläuft[cite: 1].
—
Woche 2: Die Galaxis in der Praxis
Modul 6: Dateisysteme - Everything is a File (Tag 6)
Ein Dateisystem übersetzt zwischen den rohen Hardware-Blöcken der Festplatte und den logischen Dateien des Benutzers[cite: 1].
Die Linux-Welt (Unix/ext2/ext3/ext4): Nutzt INodes (Index Nodes)[cite: 1]. Ein Inode enthält Attribute (Eigentümer, Rechte, Zeiten) und Zeiger auf die Datenblöcke[cite: 1]. Kleine Dateien werden direkt adressiert. Für größere Dateien gibt es „einfach indirekte“, „doppelt indirekte“ und „dreifach indirekte“ Blöcke, die eine baumartige Adressierung von riesigen Datenmengen erlauben[cite: 1].
Die Windows-Welt (NTFS): Nutzt eine Master File Table (MFT)[cite: 1]. Zusammenhängende Bereiche werden als B-Baum organisiert[cite: 1]. Kleine Dateien werden sogar direkt in den MFT-Eintrag (1-4 KB) geschrieben[cite: 1]. Ein Logfile (Journal) sorgt für Sicherheit nach Systemabstürzen[cite: 1].
Zudem erlauben Systeme Links: Ein Softlink verweist auf den Pfad, ein Hardlink zeigt direkt auf den Inode der Zieldatei[cite: 1].
Modul 7: Linux, GNU und die Philosophie des freien Quellcodes (Tag 7)
Linux begann 1991 als Hobby-Projekt des finnischen Studenten Linus Torvalds[cite: 1]. Doch „Linux“ ist streng genommen nur der Kernel. Zusammen mit den Werkzeugen des GNU-Projekts (Compiler wie gcc, Shells wie bash, Tools wie grep oder find) wird daraus ein vollwertiges Betriebssystem[cite: 1].
Was ist Open Source? „Frei“ (wie in Freiheit, nicht zwingend wie in Freibier) bedeutet: Der Quellcode (meist C und Assembler) ist offen. Jeder kann ihn lesen, verstehen, verändern und weitergeben. Diese Transparenz macht das System extrem sicher und anpassbar[cite: 1].
Kann man da mitmachen? Absolut! Wer einen Bug findet, kann den Code per Git (z.B. über GitLab-Management) klonen, patchen und auf der Linux Kernel Mailing List (LKML) einreichen. Wenn der Code gut ist, wird er Teil der Geschichte.
Systemvergleich:
- Linux: Hochgradig anpassbar, exzellente Speicherverwaltung, extrem stabil, Fokus auf Sicherheit[cite: 1]. Ein Traum für Administratoren und Server.
- macOS X: Basiert auf einem Unix-Kern (Darwin/Mach), bietet eine geschlossene, hochoptimierte Hardware-Software-Symbiose[cite: 1].
- Windows: Gigantisches Software-Ökosystem, hervorragende Hardwareunterstützung im Consumer-Bereich, benötigt jedoch meistens Virenscanner[cite: 1].
Modul 8: Verteilte Systeme & Netzwerke (Tag 8)
Ein verteiltes System ist ein Zusammenschluss unabhängiger Computer, der sich dem Benutzer als ein einzelnes System präsentiert[cite: 1].
- Client-Server: Der Client fordert Betriebsmittel oder Dienste an, der Server liefert[cite: 1].
- HA-Cluster (High Availability): Zwei oder mehr Knoten. Einer ist aktiv, der andere passiv[cite: 1]. Sie tauschen ständig „Heartbeat“-Signale aus[cite: 1]. Fällt der primäre Node aus (oder wird eine Perimeter-Firewall rebootet), übernimmt der sekundäre. Um „Split-Brain“-Szenarien zu verhindern, nutzt man STONITH („Shoot The Other Node In The Head“)[cite: 1]. Solche Zustände können hervorragend mit Agenten wie checkmk überwacht werden.
- HPC-Cluster: High Performance Computing, bei dem Jobs via Message Passing Interface (MPI) parallel auf Dutzenden Knoten abgearbeitet werden[cite: 1].
- Load Balancing: Clientanfragen werden an den Knoten mit der aktuell besten Performance verteilt[cite: 1].
Modul 9: Grid & Cloud Computing (Tag 9)
Das Internet wächst zu einem globalen Parallelrechner zusammen[cite: 1].
- Grid Computing: Ressourcen (Computer, Speicher, Datenbanken) werden über das Internet transparent verteilt (z.B. Data Grids oder Application Grids)[cite: 1].
- Cloud Computing: Bietet hochskalierbare Infrastruktur On-Demand[cite: 1].
- IaaS (Infrastructure as a Service): Bereitstellung von roher Hardware (Rechner, Speicher, Netze) durch Virtualisierung[cite: 1].
- PaaS (Platform as a Service): Bereitstellung einer transparenten Entwicklungsumgebung (Webserver, Laufzeitumgebung), auf der Apps getestet und gehostet werden[cite: 1].
- SaaS (Software as a Service): Komplette Anwendungen laufen beim Drittanbieter (z.B. Web-Mail oder ERP-Systeme), der Nutzer braucht nur noch einen Browser[cite: 1].
Modul 10: Embedded Systems & Organic Computing (Tag 10)
Die Zukunft liegt nicht nur in der Cloud, sondern in winzigen Geräten.
- Embedded Systems: Vom Apollo Guidance Computer der Mondlandung[cite: 1] bis zum modernen Android-Telefon oder der Kfz-Steuerung[cite: 1]. Hier kommen stark spezialisierte Echtzeit-OS wie QNX, VxWorks oder Embedded Linux zum Einsatz[cite: 1].
- Organic Computing: Künftige Systeme werden so komplex, dass sie sich wie biologische Organismen verhalten müssen: selbst-konfigurierend, selbst-heilend, selbst-optimierend und selbst-schützend (die sogenannten „self-x Eigenschaften“)[cite: 1].
Quellen
Script Betriebssysteme zur Erlangung des Grades Bachelor (German-Baltic Management School)[cite: 1]
Zusätzliche Anreicherungen und Strukturierung durch den Kursleiter.



