next up previous contents index
Next: Die ersten Schritte Up: Grundlagen Previous: Linux

Das Betriebssystem

Jeder Computer besteht aus mehreren Komponenten und Geräten, der sogenannten Hardware. Unter anderem sind das die Zentrale-Prozessor-Einheit (CPU), der Arbeitsspeicher, die Festplatte und die Diskettenlaufwerke, der Bildschirm und die Tastatur, der Drucker und das Modem. Die Komponenten sind nur lose miteinander verknüpft. Philosophisch betrachtet, stellen sie eine universelle Maschine dar, die erst durch ein konkretes Anwenderprogramm zu einer simulierten Schreibmaschine, einer Lohnbuchhaltung, einem Schachspiel oder einer Mondlandefähre wird.

Um den Programmierer eines Anwenderprogramms von den Einzelheiten der Hardwareprogrammierung zu entlasten, werden die Komponenten durch das sogenannte Betriebssystem verwaltet. Im Idealfall stellt das Betriebssystem alle Dienste der Hardware in einer abstrakteren Form zur Verfügung, ist also eine Art Hardwareerweiterung.

Das Betriebssystem muß, wie jedes andere Programm auch, zur Laufzeit im Arbeitsspeicher geladen sein. Bei einigen Computern steht das Betriebssystem in dauerhaften Speicherbausteinen, sogenannten ROM's. Die IBM-kompatiblen PC's laden den größten Teil des Betriebssystems von Diskette oder Festplatte.gif Das Betriebssystem ist das erste Programm, das nach dem Einschalten des Rechners automatisch geladen und gestartet wird. Wenn es einmal geladen ist, bleibt das Betriebssystem im Arbeitsspeicher, bis der Rechner ausgeschaltet wird.

Gemeinsam mit dem Betriebssystem stehen normalerweise noch eine Reihe von Systemprogrammen zur Verfügung, mit denen Sie beispielsweise eine Diskette formatieren oder eine Datei ausdrucken können. Ein besonders wichtiges Systemprogramm ist der Kommandozeileninterpreter, die Benutzeroberfläche des Betriebssystems, der Ihre Eingaben liest und die darin formulierten Befehle ausführt. Bei MS-DOS wird diese Aufgabe von COMMAND.COM erfüllt, unter Linux gibt es zu diesem Zweck sogenannte Shells.

Zur optimalen Ausnutzung der teuren Hardware wurden für Großrechner schon sehr früh Betriebssysteme entwickelt, die mehreren Anwendern gleichzeitig die Systembenutzung ermöglichen. Diese als Multiuser/ Multitasking    bezeichnete Eigenschaft war für das Betriebssystem der ersten PC's (1981) überflüssig. Ein moderner 386er Rechner wird dagegen von einem normalen Anwenderprogramm nicht ausgelastet. Die meiste Zeit verbringt das Betriebssystem damit, auf den nächsten Tastendruck des Benutzers zu warten. Aus diesem Grund werden jetzt auch Mehrbenutzerbetriebssysteme für PC angeboten.

Die Anforderungen an ein Mehrbenutzerbetriebssystem unterscheiden sich grundlegend von einem Einbenutzersystem:

Als echtes Mehrbenutzerbetriebssystem verwaltet Linux die Systemkomponenten sehr restriktiv. Es erlaubt den Anwenderprogrammen prinzipiell keinen direkten Zugriff auf die Hardware.

Um diese Einschränkung durchzusetzen, werden die Anwenderprogramme durch das Betriebssystem (den Kernel)  kontrolliert. Wenn ein Programm vom Benutzer aufgerufen wird, lädt der Kernel die ausführbare Dateigif in den Arbeitsspeicher und macht daraus einen Prozeß. Dieser Prozeß erhält bei seiner Entstehung einen logischen Adreßraumgif, in dem zuerst der Programmtext und die initialisierten Daten des Programms dargestellt werden, in dem das Programm aber auch seine variablen Daten ablegen kann. Die logischen Adressen werden vom Betriebssystem auf die physikalischen Adressen des Arbeitsspeichers abgebildet. Wenn das Programm auf eine (logische) Speicheradresse zugreift, muß diese Adresse erst in die physikalische Adresse umgewandelt werden. Dadurch kann das Betriebssystem unberechtigte Zugriffe auf den Adreßraum anderer Prozesse oder auf die Hardwarekomponenten feststellen und unterbinden (durch das Signal SIGSEGV) .

Die einzige Möglichkeit, auf die Systembereiche außerhalb des eigenen Adreßraums zuzugreifen, bietet der Kernel den Programmen auf Benutzerebene durch die sogenannten Systemaufrufe (system calls)  . Linux bietet ca. 150 solcher Systemaufrufe an.gif Dieses von Unix übernommene Prinzip erscheint auf den ersten Blick vielleicht als Hindernis und Einengung. Bei genauerer Betrachtung stellt man aber die enormen Vorteile fest. So ist es der Übereinstimmung mit den Systemaufrufen des Unix System V zu verdanken, daß praktisch alle Unix-Programme sofort unter Linux übersetzt werden können. Die unterschiedlichen Hardwarevoraussetzungen all der unterschiedlichen Systeme werden allein vom Kernel aufgefangen.

Wie bereits gesagt, arbeitet jedes Anwenderprogramm in einem logischen Speichersegment. Dieses Speichersegment ist in Speicherseiten zu je 4 Kilobyte unterteilt und wird vom Betriebssystem seitenweise auf den physikalischen Arbeitsspeicher abgebildet (mapping). Wenn mehr Programme gestartet werden, als auf einmal in den Arbeitsspeicher passen, kann der Kernel einzelne Speicherseiten aus dem physikalischen Adreßraum auf Festplatte auslagern (swapping) . Wenn das dadurch unvollständige Programm wieder auf eine Adresse der ausgelagerten Speicherseite zugreifen will, wird sie automatisch zurückgeladen. Dank der MMU (Memory Management Unit) des 386-Prozessors werden die grundlegenden Funktionen dieser aufwendigen Speicherverwaltung bereits durch die CPU erledigt. Die intensive Ausnutzung spezieller Prozessoreigenschaften macht Linux zu einem außerordentlich schnellen Betriebssystem.



next up previous contents index
Next: Die ersten Schritte Up: Grundlagen Previous: Linux



Linux Anwenderhandbuch -- Copyright 1993, 1994, 1995 S. Hetze, D. Hohndel, O. Kirch, M. Müller