Technischer Aufbau



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 muss, 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. 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.

Linux ist ein monolithisches System, in dem der Kernel im Adressbereich des Benutzerprozesses liegt und alle Gerätetreiber Teil dieses Kernels sind. Minix ist ein prozessstrukturiertes, modulares System, in dem die Gerätetreiber eigene Prozesse sind. Um das eigentliche Betriebssystem zu laden, haben auch die PC's ein Minimalsystem, das BIOS (Basic Input Output System), im ROM.


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


 Es müssen konkurrierende Hardwarezugriffe verhindert beziehungsweise verwaltet werden.
 Es müssen die privaten Daten der Benutzer geschützt werden.
 Die Speicherbereiche der Anwenderprogramme müssen vor ungewollten Veränderungen durch andere Programme geschützt werden.


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 Datei in den Arbeitsspeicher und macht daraus einen Prozess. Dieser Prozess erhält bei seiner Entstehung einen logischen Adressraum, 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, muss diese Adresse erst in die physikalische Adresse umgewandelt werden. Dadurch kann das Betriebssystem unberechtigte Zugriffe auf den Adressraum anderer Prozesse oder auf die Hardwarekomponenten feststellen und unterbinden (durch das Signal SIGSEGV).


Die einzige Möglichkeit, auf die Systembereiche außerhalb des eigenen Adressraums zuzugreifen, bietet der Kernel den Programmen auf Benutzerebene durch die sogenannten Systemaufrufe (system calls). Linux bietet ca. 150 solcher Systemaufrufe an. 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, dass 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 Adressraum 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.

 



Nach Oben