Zum Inhalt springen

Betriebssystem

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 2. September 2003 um 19:21 Uhr durch Hubi (Diskussion | Beiträge) (Kommafehler). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Ein Betriebssystem ist Software, die die Verwendung (den Betrieb) eines Computers ermöglicht.

Betriebssysteme bestehen in der Regel aus einem Kernel, der die Hardware des Computers verwaltet, sowie Programmen und Programmierbibliotheken zur Nutzung bzw. Programmierung des Computers.

Unterschieden werden Einbenutzer- und Mehrbenutzersysteme, Einzelprogramm- und Mehrprogrammsysteme, Stapelverarbeitungs- und Dialogsysteme. Betriebssysteme finden sich praktisch überall: als Echtzeitsysteme auf Prozessrechnern, auf normalen PCs und als Mehrprozessorsysteme auf Servern und Großrechnern.

Betriebssystemarten

Im PC-Bereich sind derzeit die meistgenutzten Betriebsysteme die verschiedenen Varianten von Microsoft Windows sowie Apple Mac OS X (kommerziell), und die Varianten von Linux (GNU-Lizenz, frei kopierbar). Diese stellen Systeme für mittelgroße Rechner dar. Inbesondere Linux wird aber auch für kleinere und größere Systeme zunehmend eingesetzt.

Daneben existieren weitere Systeme für Klein- und Kleinstrechner sowie Systeme speziell für Großrechner. Eine Liste von Betriebssystemen ist in einem eigenen Artikel zusammengestellt. In Universitäten existieren noch eine ganze Reihe experimenteller Betriebssysteme, die zu Forschungs- und Lehrzwecken eingesetzt werden.

Programme, Speicher- und Geräteverwaltung

Zu den Aufgaben eines Betriebssytems gehören meist:

  • Speicherverwaltung
    • Zuweisung und Überwachung des Betriebsmittels Speicher (Haupt- und Hintergrundspeicher).
    • Führung von Tabellen der Speicherbelegung durch Benutzerjobs bzw. Prozesse (laufende Programme).
    • Bedienung von Anforderungen und Freigabe von Speicher.
  • Programm-(Prozess)-Verwaltung
    • Betreuung sämtlicher Prozesse (im Ablauf befindlicher Programme) im Rechnersystem.
    • Erzeugung von neuen Prozessen auf Anforderung des Betriebssystems bzw. anderer existierender Prozesse,
    • Entfernung von Prozessen aus dem System.
    • Kommunikation und Synchronisation von Prozessen untereinander (Interprozesskommunikation)
  • Geräte- und Dateiverwaltung
    • Effiziente Zuweisung von Ein-/Ausgabegeräten und Vermittlungseinheiten (Datenkanäle, Steuereinheiten), Vermeidung von Konflikten
    • Initiierung, Überwachung der Ausführung, Terminierung von Ein-/Ausgabevorgängen.
    • Verwaltung des Dateisystems. Erzeugung eines Namensraums mit zugehörigen Speicherobjekten und gegebenfalls weiteren Objekten.

Dienstprogramme und Anwendungsprogramme

Die meisten Betriebssysteme enthalten Dienstprogramme, auch Utilities oder Werkzeuge (Tools) genannt. Sie ermöglichen dem Benutzer bzw. Systemverwalter die Bearbeitung allgemeiner sowie systemnaher Aufgaben. Dazu gehören unter anderem Editoren, Kopierprogramme, Benutzerverwaltungsprogramme, Systemüberwachungsprogramme und Werkzeuge zur Datensicherung.

Anwendungsprogramme zählen in der Regel nicht zum eigentlichen Betriebssystem. Sie stammen entweder vom Hersteller des Systems oder von anderen Anbietern. Anwendungsprogramme können auch mit dem Betriebssystem ausgeliefert werden (Beispiele: Viele Programme in Linux-Distributionen oder der Internet-Explorer als Teil von Microsoft Windows).

Betriebsmittelverwaltung und Abstraktion

Als Betriebsmittel oder Ressourcen bezeichnet man alle von der Hardware eines Computers zur Verfügung gestellten Komponenten, also den Prozessor (bei Mehrprozessorsystemen natürlich die Prozessoren), den physikalischen Speicher und alle Geräte wie Festplatten-, Disketten- und-CDROM Laufwerke, Netzwerk- und Schnittstellenadapter und andere.

Einführendes Beispiel: Zeitgeberbausteine

Moderne Rechnersysteme besitzen Zeitgeberbausteine. In frühen PCs wurde z. B. der Baustein 8284 der Fa. Intel eingesetzt. Dieser Baustein muß zunächst initialisiert werden, er kann dann nach Ablauf einer Zeitspanne oder periodisch den Prozessor unterbrechen und diesen zur Abarbeitung einer eigenen Routine (Unterbrechungsroutine) veranlassen. Neben der Initialisierung ist die Unterbrechungsroutine zu erstellen, wobei mindestens zum Aufruf sind Teile in Assembler zu erstellen sind. Da Unterbrechungen asynchron auftreten, sind komplexe Verhältnisse hinsichtlich der Datenstrukturen zu berücksichtigen. Genaue Kenntnis des Bausteins (Datenblatt) sowie der Computerhardware (Unterbrechungsbehandlung) und des Prozessors sind erforderlich.

Virtuelle Prozessoren

Ein modernes Mehrprogrammbetriebssystem verwendet einen solchen Zeitgeberbaustein, um den normalerweise einzigen Prozessor periodisch (normalerweise im Millisekundenbereich) zu unterbrechen und eventuell mit einem anderen Programm fortzufahren (sogenanntes präemptives Multitasking). Die Initialisierung und die Unterbrechungsroutine werden dabei vom Betriebssystem implementiert. Auch wenn nur ein einzelner Prozessor zur Verfügung steht, können mehrere Programme ausgeführt werden, jedes Programm erhält einen Teil der Prozessorzeit (Scheduling). Jedes Programm verhält sich, bis auf die verlangsamte Ausführungszeit, so als hätte es einen eigenen virtuellen Prozessor.

Virtuelle Zeitgeber

Über einen Systemruf, z. B. alarm, wird jedem Programm darüber hinaus ein eigener virtueller Zeitgeber zur Verfügung gestellt. Das Betriebssystem zählt die Unterbrechungen des Original-Zeitgebers und informiert Programme, die den alarm-Systemruf verwendeten. Die einzelnen Zeitpunkte werden über eine Warteschlange verwaltet.

Abstraktion

Die Hardware des Zeitgebers ist damit vor den Programmen verborgen. Ein System mit Speicherschutz erlaubt den Zugriff auf den Zeitgeberbaustein nur über den Kernel und nur über exakt definierte Schnittstellen (meist Systemrufe genannt, die über spezielle Prozessorbefehle wie TRAP, BRK, INT realisiert werden). Kein Programm kann somit das System gefährden, die Verwendung des virtuellen Zeitgebers ist einfach und portabel. Der Anwender oder Programmierer braucht sich nicht um die (komplexen) Details zu kümmern.

Virtualisierung weiterer Betriebsmittel

Wie Prozessoren und Zeitgeber virtualisiert werden, trifft dies auch auf alle anderen Betriebsmittel zu. Dabei werden Abstraktionen teilweise nur als Software implementiert, andere erfordern spezielle Hardware.

Dateisysteme

Über Dateisysteme werden die Details der externen Speichersysteme (Festplattenlaufwerke, Diskettenlaufwerke, CDRoms) verborgen. Dateinamen und Verzeichnisse erlauben den bequemen Zugriff, die eigentlich vorhandene Blockstruktur und die Geräteunterschiede sind vollkommen unsichtbar.

Interner Speicher

Der interne Speicher (RAM) wird in Blöcke (Kacheln) aufgeteilt und den entsprechenden Programmen zur Verfügung gestellt. Über virtuellen Speicher wird bei vielen Systemen jedem Programm ein kontinuierlicher Bereich zur Verfügung gestellt. Dieser Speicher ist physikalisch nicht kontinuierlich, es können sogar unbenutzte Teile auf den externen Speicher ausgelagert sein. Der virtuelle Speicher eines Programms kann sogar größer als der reale Speicher sein.

Netzwerk

Die Details der Netzwerkzugriffe werden verborgen, indem auf die eigentliche Hardware (Netzwerkkarte) ein Protokollstapel aufgesetzt wird. Die Netzwerksoftware erlaubt beliebig viele virtuelle Kanäle. Auf der Ebene der Sockets (Programmierung) ist die Netzwerkkarte vollkommen unsichtbar, das Netzwerk hat viele neue Fähigkeiten (bidirektionale, zuverlässige Datenströme, Adressierung, Routing) bekommen.


Beispiele

Der C64, ein Heimcomputer der 1980er Jahre

In den 1980er Jahren waren Heimcomputer populär. Diese konnten neben nützlichen Aufgaben auch Spiele ausführen. Die Hardware bestand aus einem 8-Bit-Prozessor mit bis zu 64kBytes Ram, einer Tastatur und einem Monitor/Fernsehgerätausgang. Einer der populärsten dieser Computer war der Commodore C64 mit dem 6510-Mikroprozessor. Dieser Computer hatte ein 8k-ROM BIOS, das die Geräte Bildschirm, Tastatur, serielle IEC-Schnittstelle für Diskettenlaufwerke bzw. Drucker, Kassetteninterface initialisierte und über ein Kanalkonzept teilweise abstrahierte. Über ein 8k-ROM BASIC, das auf die Funktionen des BIOS aufsetzte, konnte das System bedient und programmiert werden. Das Betriebssystem dieses Computers kann auf der Ebene des BASIC-Interpreters als gute Hardwareabstraktion angesehen werden. Natürlich sind weder Kernel, Speicher- oder sonstiger Hardwareschutz vorhanden. Viele Programme, vor allem auch Spiele, setzten sich über das BIOS hinweg und griffen direkt auf entsprechende Hardware zu.

Abstraktionsschichten im Betriebssystem des Heimcomputers C64

MSDOS, ein Diskettenbetriebssystem

Die ersten IBM-PCs waren ganz ähnlich wie der C64 aufgebaut. Auch sie verfügten über ein eingebautes BIOS zur Initialisierung und Abstraktion der Hardware. Sogar ein BASIC-Interpreter war vorhanden. Im Gegensatz zum BIOS wurde auf BASIC jedoch in den kompatiblen Rechnern anderer Firmen verzichtet.

Der PC konnte mit seinem Intel 8088 Prozessor bis zu 1Mbyte Speicher adressieren, die ersten Modelle waren jedoch nur mit 64Kbyte ausgestattet. Diskettenlaufwerke lösten die alten Kassettenrekorder als Speichermedium ab. Diese erlauben vielfaches Schreiben und Lesen einzeln adressierbarer 512Byte-Blöcke. Die Benutzung wird durch ein ’’Diskettenbetriebsystem (Disk Operating System DOS)’’ vereinfacht, das ein abstraktes Dateikonzept bereitstellt. Blöcke können zu beliebig großen Clustern (Dateien) zusammengefasst werden, eine Diskette kann dabei sehr viele solche Dateien enthalten, die über Namen erreichbar sind. PC-DOS der Firma Microsoft, auch MSDOS (Microsoft Disk Operating System) genannt, ist ein solches System. Es setzt auf das BIOS auf und stellt Dateisystemoperationen zur Verfügung.

Auf den ersten PCs ist kein Speicherschutz realisiert, die Programme können daher an MSDOS vorbei direkt auf BIOS und sogar auf die Hardware zugreifen. MSDOS stellt auch keinen für alle Zwecke ausreichenden Abstraktionsgrad zu Verfügung. Es läßt sich nur ein gleichzeitig Programm starten, die Speichervewaltung ost eher rudimentär. Ein Teil der Hardware wird nicht unterstützt und muß sogar von Programmen direkt angesprochen werden. Die Performance einiger Routinen, speziell zu Textausgabe, war verbesserungswürdig. Viele Programme setzten sich daher zwangsläufig über das Betriebssystem hinweg und schrieben z. B. direkt in den Bildschirmspeicher. MSDOS wird mit einem Satz von Programmen (sogenannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.

Abstraktionsschichten eines PC unter MSDOS

Spätere PCs wurden mit dem Intel 80386 Prozessor ausgestattet, der Speicherschutz ermöglichte.

Linux (GNU/Linux), ein modernes Mehrprogrammsystem

Linux läuft als portables Betriebssystem auf verschiedenen Rechnern, wurde aber zunächst auf PCs mit 80386 Prozessor entwickelt. Das in diesen Rechnern eingebaute BIOS dient nur noch zum Initialisieren der Hardware und zum Hochfahren des Betriebssystem-Kernels. Die Routinen des BIOS sind jedoch für Mehrprogrammsysteme wie Linux ungeeignet, insbesondere weil der Prozessor durch Warten belastet wird anstatt durch eine – in der Hardware durchaus vorhandene – geschickte Unterbrechungsverwaltung auf Ereignisse zu reagieren.

Linux verwendet daher nach dem Starten des Systems eigene Gerätetreiber. Es verteilt die Prozessorzeit auf verschiedene Programme (Prozesse). Jeder dieser Prozesse erhält einen eigenen, geschützten Speicherbereich und kann nur über Systemrufe auf die Gerätetreiber und das Betriebssystem zugreifen. Die Programme laufen im User Modus, während der Kernel im Kernel-Mode arbeitet. Die Privilegien im User-Modus sind sehr eingeschränkt. Abstraktion und Speicherschutz sind nahezu vollkommen, ein direkter Zugriff wird nur sehr selten und unter genau kontrollierten Bedingungen gestattet. Kein Programm kann so das Gesamtsystem gefährden, wenn keine unentdeckten Fehler im System vorhanden sind.

Datei:Linux schichten.png

Fast vollständige Abstraktion unter Linux

Linux stellt wie sein Vorbild Unix eine vollständige Abstraktion und Virtualisierung für nahezu alle Betriebsmittel bereit (virtueller Speicher, Illusion eines eigenen Prozessors etc.). Erwähnenswert ist hier unter anderem auch die TCP/IP-Netzwerkimplementation sowie die grafische Benutzeroberfläche X11. Programmbibliotheken und ein großer Satz von Werkzeugen (meist Kommandos des GNU-Projekts) sowie eine Entwicklungsumgebung unter anderem für die Sprache C runden das System ab.


Siehe auch: Liste der Betriebssysteme, Entwicklung der heutigen Betriebssysteme

Literatur

  • Andrew S. Tanenbaum: Moderne Betriebssysteme, Hanser Verlag 2002, ISBN 3827370191