Einleitung

Über dieses Buch

In diesem Buch geht es um Betriebssysteme. Betriebssysteme sind aus vielerlei Gründen eine faszinierende Form von Software. Sie sind ausgesprochen vielgestaltig, sie müssen äußerst zuverlässig arbeiten, und die in ihnen verankerten Algorithmen sind teilweise höllisch komplex. Keine Software muss so optimal auf die Hardwarearchitektur abgestimmt sein, wie das Betriebssystem.

Wo viel Licht ist, ist natürlich auch viel Schatten. Wenn ein Betriebssystem seine Aufgaben gut erledigt, dann merkt man von seiner Anwesenheit so gut wie nichts. Es handelt sich sozusagen um mehr oder minder »unsichtbare« Software. Während Computergrafiker oder Experten für Künstliche Intelligenz in der Öffentlichkeit meist spektakuläre Ergebnisse vorweisen können, stehen Fachleute für Betriebssysteme selten im Mittelpunkt. Gegenstand der Berichterstattung sind sie zumeist nur, wenn ein Rechensystem versagt hat (wobei es meist nicht am Betriebssystem liegt), wenn wieder eine Klinik oder eine Hochschule mittels eines verschlüsselnden Trojaners erpresst wird.

Sie sind also gewarnt! Falls Sie nach der Lektüre dieses Buches den Wunsch verspüren, sich weiter in die Geheimnisse der Betriebssysteme zu vertiefen, dann werden Sie mit hoher Wahrscheinlichkeit keine Person des öffentlichen Interesses sein. Ausgeschlossen ist es natürlich nicht, Sie könnten beispielsweise mit Hilfe von Betriebssystemen erfolgreiche Firmen gründen, denken Sie an Apple oder Microsoft. Aber auch ohne diese Superlative sind Betriebssysteme ein interessantes Spezialisierungsgebiet; allzu viele Fachleute gibt es nämlich nicht.

Betriebssysteme sind übrigens fast auf jedem Rechner unabdingbar. Sie gestatten es dem Nutzer des Systems oder dem Anwendungsprogrammierer, sich auf die Probleme ihrer Domäne zu konzentrieren. Der Nutzer, der ein Programm starten möchte, klickt auf ein grafisches Symbol, oder (wenn es sich um einen fortgeschrittenen Nutzer handelt) er gibt den Namen des Programms an einer Kommandozeile ein. Wenige Augenblicke später öffnet sich das oder die Fenster des Applikationsprogramms. Der Nutzer muss keinen Gedanken daran verschwenden, wo sich das Binärabbild des Programms auf dem Massenspeicher befindet, und ihm ist auch egal, an welche Adressen im Hauptspeicher dieses geladen wird. Darum kümmert sich stillschweigend das Betriebssystem. Startet der Nutzer gleich mehrere Programme, oder arbeiten mehrere Nutzer am selben System, dann sorgt das Betriebssystem dafür, dass sich diese nicht gegenseitig ins Gehege kommen und dass auch alle gestarteten Prozesse die Hardwareausstattung des Rechners (der Betriebssystemler spricht von »Ressourcen«) gleichberechtigt nutzen dürfen.

Wie bereits erwähnt kann man heutzutage auch eine missbräuchliche Verwendung von Rechensystemen nicht mehr ignorieren. So werden aus den unterschiedlichsten Gründen Rechner angegriffen, Zugänge unberechtigt erschlichen, Daten ausspioniert und manipuliert und ganze Rechnerverbünde auch lahmgelegt. Das Betriebssystem bildet in diesem Kontext die wichtigste Verteidigungslinie. Man könnte möglicherweise sogar postulieren, dass dies die wichtigste Funktion des Betriebssystems ist.

Konventionen in diesem Buch

Kursiv gedruckte Begriffe sollen sowohl in ihrer Wichtigkeit betont werden als auch bei erster Benutzung hervorgehoben werden. Begriffe, die eine präzise Definition erfordern, sind im Allgemeinen in einen extra Kasten gesetzt. Alle programmiersprachlichen Konstrukte im Fließtext, wie Systemrufe, Bezeichner und Schlüsselworte, sowie alle Kommandos sind in Schreibmaschinenschrift gesetzt. Um Ihnen die weiterführende Lektüre zu erleichtern, sind alle wichtigen Begriffe sowohl in Deutsch als auch in Englisch angegeben (manchmal sind die deutschen Begriffe sehr ungebräuchlich; niemand sagt »Planer« zum Scheduler). Am Ende der einzelnen Kapitel gibt es einige Vorschläge zur vertiefenden Lektüre.

Alle längeren Codebeispiele sind zeilennumeriert, um im Text Bezug nehmen zu können. Schlüsselworte der Programmiersprache C sind der Übersichtlichkeit halber fett gedruckt.

Symbole in diesem Buch

imagesDiese Abschnitte enthalten tiefergehende Erläuterungen, die bei der ersten Lektüre übersprungen werden können.

imagesDieses Symbol weist auf Stolperstellen, potenzielle Fehler und allgemein auf Probleme hin.

imagesAn dieser Stelle werden für das Gesamtverständnis wichtige Begriffe definiert.

imagesAbschnitte dieser Art enthalten illustrierende Beispiele. Diese sollten besonders sorgfältig studiert und nachvollzogen werden.

imagesDieses Symbol kennzeichnet anekdotische Begebenheiten sowie geschichtliches Hintergrundwissen, mit dem Sie auf jeder Informatikerparty brillieren können.

imagesHier finden Sie wichtige Aussagen oder Erkenntnisse, die eine besondere Hervorhebung erfordern.

Törichte Annahmen über den Leser

Idealerweise interessieren Sie sich für den Aufbau und die Funktionsweise von Betriebssystemen. Ob die Motivation zur Lektüre intrinsisch ist oder durch einen näher rückenden Klausurtermin extern befeuert wird, ist zunächst egal. Möglicherweise ist Ihnen auch die Lektüre alternativer Publikationen zum Diskursbereich schwergefallen, oder die Vorlesung fand stets freitags um 17 Uhr statt.

Natürlich sind Studenten der Informatik und angrenzender Bereiche eine wichtige Zielgruppe dieses Buches. Es ist aber bewusst so verfasst, dass es prinzipiell auch für Nichtakademiker geeignet ist. Sie müssen nicht programmieren können (es schadet natürlich auch nicht), ein kleiner abgeschlossener Kurs, der Sie in die Anfangsgründe von C einführt, ist enthalten. Allenfalls grundlegende Kenntnisse über Rechentechnik werden vorausgesetzt (Sie sollten wissen, was ein Byte oder eine Festplatte sind).

Viel wichtiger als alle akademische Bildung und Vorbildung ist einfach das Interesse, ein komplexes Softwaresystem, um das es sich bei Betriebssystemen in aller Regel handelt, so gut wie möglich verstehen und gedanklich durchdringen zu wollen. Nützlich ist fürderhin eine gewisse Experimentierfreude. Sie finden im Buch häufig die Aufforderung, unklare Sachverhalte einfach auszuprobieren. Da es sich bei Betriebssystemen um Software handelt, können Sie nämlich nichts kaputt machen (na gut, sagen wir, fast nichts, denn eine ordentlich programmierte Fork-Bombe kann schon einmal einen Neustart des Rechners erfordern).

Höchstwahrscheinlich nicht auf Ihre Kosten kommen Sie, wenn Sie Anleitungen zum Installieren von Betriebssystemen suchen oder wenn Sie theoretische Aspekte von Betriebssystemen studieren wollen. Für diese Zwecke wird auf die reichlich vorhandene Spezialliteratur verwiesen.

Wie dieses Buch aufgebaut ist

In diesem Büchlein lernen Sie Betriebssysteme von zwei Seiten kennen. Sie schauen zum einen von außen auf typische Betriebssysteme und lernen, welche Funktionen und Dienste diese für die Programmierung von Anwendungen anbieten. Dabei stützen wir uns häufig auf die POSIX-API (keine Sorge; diese und ähnliche Begriffe verlieren ihre Mystik schon in den ersten Kapiteln) des Linux-Kernels. Sie lernen gewissermaßen, das Betriebssystem als Dienstleister zu verstehen.

Zum anderen sollen Sie aber auch solide Kenntnisse erwerben, wie diese Dienste durch das Betriebssystem erbracht werden. Es soll also nicht als Black Box aufgefasst werden, sondern wir wollen den einen oder anderen Blick in die »Innereien« von Betriebssystemen werfen. Aber keine Sorge: Es geht weniger darum, neue Betriebssysteme zu programmieren (schließlich gibt es schon eine ganze Menge bewährte), sondern mehr um ein grundlegendes Verständnis der Arbeitsweise der einzelnen Komponenten.

Zu diesem Zweck gliedert sich Betriebssysteme für Dummies in sechs grundlegende Teile.

Teil I: Grundlagen

Im Teil I erlernen Sie alles, was Sie für das Verständnis des restlichen Textes benötigen; das ist zum einen eine knappe Einführung, wie Sie mit einem Linux-System arbeiten, und zum anderen einen (nicht ganz so knappe) Einführung in die Programmiersprache C. Letztere ist notwendig, denn die allermeisten Betriebssysteme sind in C programmiert, und auch die systemnahe Programmierung erfolgt meist in C. Beiden Kapiteln vorangestellt ist die Einführung zum Thema, in der Sie etwas über die geschichtliche Entwicklung der Betriebssysteme erfahren und darüber, was man nun konkret unter einem Betriebssystem versteht.

Teil II: Aktivitäten im Betriebssystem

Teil II des Buches ist den sogenannten Aktivitäten gewidmet. Darunter versteht man, grob gesagt, die ausgeführten Programme. Kapitel 4 »Grundlegende Begriffe undAbstraktionen« erläutert weitere wichtige Begriffe, Kapitel 5 »Action! Aktivitäten,Prozesse und all das« ist der Blick von außen. Sie erlernen, wie Sie programmtechnisch neue Prozesse und Threads in das System aufnehmen (und aus diesem wieder entfernen). Der Blick in die »Innereien« des Betriebssystems, die mit Aktivitäten zu tun haben, erfolgt in Kapitel 6 »Planen von Aktivitäten (Scheduling)«. Sie lernen, wie der sogenannte Scheduler arbeitet und nach welchen Kriterien dieser die einzelnen Aktivitäten in eine konkrete Abarbeitungsreihenfolge bringt. An dieser Stelle kann ein Hauch Mathematik nicht vermieden werden, aber Sie brauchen keine Angst zu haben, es ist wirklich nur ein Hauch.

Teil III: Interaktion zwischen Aktivitäten

Die Aktivitäten eines Systems arbeiten sehr häufig miteinander und müssen sich zu diesem Zweck zeitlich abstimmen (man sagt »synchronisieren«) und Daten miteinander austauschen (kommunizieren). Diese beiden Aspekte sind Gegenstand von Teil III. Jeweils ein Kapitel ist der Synchronisation sowie der Kommunikation von Aktivitäten gewidmet. Beide Aspekte zusammen genommen bilden die sogenannte »Inter Process Communication«, abgekürzt IPC.

Teil IV: Speicher

Im Teil IV geht es um Speicher: zum einen um den flüchtigen (RAM) im Kapitel 9 »Hauptspeicher (RAM)« und zum anderen um den nicht flüchtigen oder persistenten, also den Massenspeicher, in Kapitel 10 »Persistenter Speicher«. Wie schon im vorangehenden Teil sind auch hier der Blick von außen und die »inneren Werte« in jedem Kapitel verankert. Sie lernen wichtige Verfahren kennen, beide Formen des Speichers zu verwalten. Zwei wichtige Begriffe sind »Allokatoren«, das sind die Komponenten, bei denen sich die Nutzerprogramme Hauptspeicherblöcke besorgen, und »Dateisystem«. Von Letzterem haben Sie bestimmt schon eine ungefähre Vorstellung.

Teil V: Sicherheit

Der letzte inhaltliche Teil V nimmt ein bisschen eine Sonderstellung ein. Er umfasst nur ein einziges Kapitel »Betriebssystem-Sicherheit«, dieses fällt aber verhältnismäßig umfangreich aus. Es ist auch ein klitzekleines bisschen schwieriger zu verstehen, sodass Sie nicht gerade mit ihm beginnen sollten. Wenn Sie aber die ersten zehn Kapitel gemeistert haben, dann haben Sie genügend Wissen erworben, um dieses letzte anspruchsvolle Kapitel zu absolvieren. Lassen Sie sich nicht entmutigen: Es sind besonders viele Referenzen angegeben, die Ihnen im Zweifelsfalle weiterhelfen.

Teil VI: Top-Ten-Teil

Der allerletzte Teil ist (subjektiv) zehn wichtigen Persönlichkeiten gewidmet, die unsere heutige Welt der Betriebssysteme entscheidend geprägt haben. Lassen Sie sich von ihnen inspirieren, diese Welt zu entdecken!

Wie Sie dieses Buch lesen sollten

Unabhängig von Ihrer Motivation, sich mit Betriebssystemen tiefer auseinanderzusetzen, ist es sicherlich günstig, mit Kapitel 1 zu beginnen. Besitzen Sie Grundkenntnisse in der Nutzung von Linux und/oder der Programmiersprache C, dann dürfen Sie die Kapitel 2 und/oder 3 getrost überspringen. Beide sind verhältnismäßig kurze Abhandlungen, die Sie noch nicht zum Profi machen, sondern es Ihnen ermöglichen, die Kommando- und Codebeispiele in den folgenden Kapiteln zu verstehen.

Von da ab ist eine Lektüre in der Reihenfolge der Kapitel am sinnvollsten, wobei es ohne Weiteres möglich ist, Kapitel 7 mit Kapitel 8 und Kapitel 9 mit Kapitel 10 zu tauschen, wenn das Ihren Interessen entgegenkommt.

Sollten Sie (schlimmstenfalls in Form einer Pflichtveranstaltung) einer akademischen Vorlesung »Betriebssysteme« lauschen, dann kann es günstiger sein, die Kapitel in der Reihenfolge der Veranstaltungen zu zu lesen. Kapitel 5 »Aktivitäten« sollte relativ früh verstanden sein; dies werden aber ohnehin wohl alle Dozenten so handhaben. Am besten ist es natürlich, Sie hören »Betriebssysteme« als angehende Informatiker oder Medieninformatik an der HTW Dresden; dann können Sie einfach das Buch in einem Rutsch durchlesen. Es kommt alles zur Prüfung dran.

Wenn Sie mehr erfahren wollen, dann folgen Sie bitte den an verschiedenen Stellen eingefügten Lesevorschlägen; immerhin handelt es sich bei diesem Büchlein um eine Einführung in das Themengebiet und nicht um eine Enzyklopädie. Des Weiteren gibt es eine moderate Menge an Übungsaufgaben, die zumeist mit überschaubarem Aufwand lösbar sind.

Zögern Sie nicht, mit dem Autor Kontakt aufzunehmen, falls Sie Fehler oder Unklarheiten entdecken. Im Gegensatz zu Donald E. Knuth kann ich keinen Scheck über einen hexadezimalen Dollar für jeden gefundenen Fehler ausloben, sondern bestenfalls ein herzliches »Dankeschön!«.

Und nun wünsche ich viel Spaß und hoffentlich tiefe Erkenntnisse bei der Lektüre!

St. Egidien im Juni 2023

Robert Baumgartl