Betriebssystem
Ein Betriebssystem (BS) ist Software, die die Verwendung (den Betrieb) eines Computers ermöglicht. Es verwaltet Betriebsmittel wie Speicher, Ein- und Ausgabegeräte und steuert die Ausführung von Programmen.Der englische Begriff "operating system" kennzeichnet den Sinn und Zweck: die in den Anfängen der Computer stark mit schematischen und fehlerträchtigen Arbeiten beschäftigte Operator-Mannschaft schrieb sich Programme, um sich die Arbeit zu erleichtern; diese wurden nach und nach zum operating system zusammen gefasst.
Betriebssysteme bestehen in der Regel aus einem Kernel, der die Hardware des Computers verwaltet, sowie Programmenen 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 Echtzeitbetriebssysteme auf Prozessrechnern, auf normalen PCs und als Mehrprozessorsysteme auf Servern und Großrechnern.
Im PC-Bereich sind derzeit die meistgenutzten Betriebssysteme die
verschiedenen Varianten von Microsoft Windows sowie Apple Mac OS X (kommerziell),
die Varianten von Linux (GNU-Lizenz, frei kopierbar) sowie BSD-Unix.
Diese stellen Systeme für mittelgroße Rechner dar. Insbesondere 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. In Universitäten werden häufig zusätzlich noch eine ganze Reihe experimenteller Betriebssysteme für Forschungs- und Lehrzwecke eingesetzt.
Als das am häufigsten eingesetzte Betriebssystem gilt zur Zeit ITRON, ein japanisches Echtzeitbetriebssystem, das auf etwa 3 Milliarden Installationen, hauptsächlich in embedded Anwendungen wie Haushalts- oder Unterhaltungsgeräten, geschätzt wird. Konkurrent mit ähnlichen Einsatzbereichen ist das skalierbare Echtzeitbetriebssystem QNX, das in den meisten Geldautomaten residiert.
Siehe auch: Liste der Betriebssysteme
Zu den Aufgaben eines Betriebssytems gehören meist:
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).
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.
Moderne Rechnersysteme besitzen Zeitgeberbausteine (Timer). In frühen PCs
wurde z. B. der Baustein 8284 der Firma Intel eingesetzt.
Dieser Baustein muss zunächst initialisiert werden. Er kann dann
nach Ablauf einer Zeitspanne oder periodisch den Prozessor
unterbrechen und ihn zur Abarbeitung einer eigenen Routine veranlassen.
Neben der Initialisierung ist eine Unterbrechungsroutine zu erstellen,
deren Aufruf in einer dafür geeigneten Sprache (meist Assembler) programmiert werden muss.
Da Unterbrechungen asynchron auftreten, sind komplexe Verhältnisse
hinsichtlich der Datenstrukturen zu berücksichtigen. Genaue
Kenntnisse des Bausteins (Datenblatt), der Computerhardware
(Unterbrechungsbehandlung) und des Prozessors sind erforderlich.
Die einzelnen Komponenten, die an diesem Prozess beteiligt sind, fasst
man unter dem Begriff Rechnerarchitektur zusammen.
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 (so genanntes 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.
Ü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.
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.
So wie Prozessoren und Zeitgeber virtualisiert werden, ist dies auch für alle anderen Betriebsmittel möglich. Dabei werden einige Abstraktionen teilweise nur als Software implementiert, andere erfordern spezielle Hardware.
Über Dateisysteme werden die Details der externen Speichersysteme (Festplatten-, Disketten- oder CD-ROM-Laufwerke) verborgen. Dateinamen und Verzeichnisse erlauben den bequemen Zugriff, die eigentlich vorhandene Blockstruktur und die Geräteunterschiede sind vollkommen unsichtbar.
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.
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.
Als Graphische Benutzeroberfläche (grafisches Benutzerinterface) wird generell eine Bildschirmausgabe beschrieben, wenn sie über einen Prompt hinausgeht.
Mit den richtigen Grafikkarten und Bildschirmen ist die Darstellung von geometrischen Objekten (Linien, Kreisen, Ellipsen, aber auch Schriftattributen und Farben) auf dem Bildschrim möglich, aus denen sich komplexere geometrische Elemente wie Knöpfe, Menüs, etc. Benutzeroberflächen zum einfachen Steuern von Programmen erstellen lassen.
Die Grafikkarte als Hardware ist für den Programmierer und Anwender vollkommen verborgen.
In den 1980er Jahren wurden Heimcomputer populär. Diese konnten neben nützlichen Aufgaben auch Spiele ausführen. Die Hardware bestand aus einem 8-Bit-Prozessor mit bis zu 64KB RAM, einer Tastatur und einem Monitor- bzw. HF-Ausgang. Einer der populärsten dieser Computer war der Commodore C64 mit dem Mikroprozessor 6510. Dieser Computer hatte ein 8KB-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 8KB-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
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 (16-Bit-Register) bis zu 1MB Speicher adressieren, die ersten Modelle waren jedoch nur mit 64KB ausgestattet. Diskettenlaufwerke lösten die alten Kassettenrekorder als Speichermedium ab.
Diese erlauben vielfaches Schreiben und Lesen einzeln adressierbarer 512-Byte-Blöcke. Die Benutzung wird durch ein ’’Diskettenbetriebssystem (Disk Operating System, DOS)’’ vereinfacht, das ein abstraktes Dateikonzept bereitstellt. Blöcke können zu beliebig großen Clustern (Zuordnungseinheit, kleinste für das BS ansprechbare Einheit) zusammengefasst werden. Dateien (logische Informationseinheiten) belegen einen oder mehrere (verkettete) dieser Cluster. Eine Diskette kann viele Dateien enthalten, die über Namen erreichbar sind. Das DOS der Firma Microsoft, auch MS-DOS (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 war kein Speicherschutz realisiert, die Programme konnten daher an DOS vorbei direkt auf BIOS und sogar auf die Hardware zugreifen. Erst spätere PCs wurden mit dem Intel 80286-Prozessor ausgestattet, der Speicherschutz ermöglichte. MS-DOS stellte auch keinen für alle Zwecke ausreichenden Abstraktionsgrad zur Verfügung. Es ließ sich nur ein Programm gleichzeitig starten, die Speicherverwaltung war eher rudimentär. Ein Teil der Hardware wurde nicht unterstützt und musste von Programmen direkt angesprochen werden, was dazu führte, dass beispielsweise für jedes Spiel die Soundkarte neu konfiguriert werden musste. Die Performance einiger Routinen, speziell zur Textausgabe, war verbesserungswürdig. Viele Programme setzten sich daher zwangsläufig über das Betriebssystem hinweg und schrieben z. B. direkt in den Bildschirmspeicher.
MS-DOS wurde mit einem Satz von Programmen (so genannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.
Abstraktionsschichten eines PC unter DOS
Linux läuft als portables Betriebssystem auf verschiedenen Rechnerarchitekturen, wurde aber zunächst für PCs mit
Intel-Architektur 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 (interrupt handling) auf Ereignisse (sog. events) 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 Systemaufrufe auf die
Gerätetreiber und das Betriebssystem zugreifen. Die Programme laufen im Benutzermodus (user mode), während der Kernel im Kernel-Modus
(kernel mode) arbeitet. Die Privilegien im Benutzermodus 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. 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.).
Fast vollständige Abstraktion unter Linux
Viele Benutzer greifen zu den sogenannten Linux-Distributionen, die von verschiedenen Firmen, die
auch den Support übernehmen, verkauft werden. Diese Distributionen beinhalten nicht nur das Betriebssystem, sondern auch eine große Auswahl weiterer
Software zur vereinfachten Handhabung. Erwähnenswert ist hier die grafische Benutzeroberfläche X11. Programmbibliotheken und ein großer Satz von Werkzeugen (meist Kommandos des GNU-Projekts) sowie Entwicklungsumgebungen, unter anderem für die Sprache C, runden das System ab.
Eine Warteschlange für die Ereignisse ermöglichte auch kooperatives Multitasking. Die erste Version von Windows, die in größeren Mengen verkauft werden konnte, war das 1990 erschienene Windows 3.0, das überlappende Fenster und eine fast vollständige Grafikkarten-unabhängige Programmumgebung bot, bei der schon damals verfügbaren Anzahl unterschiedlicher Grafikkarten eine nicht zu unterschätzende Leistung.
Das System wurde noch im Oktober 1992 um Netzwerkfähigkeiten erweitert, die neue Version hieß Windows für Workgroups. Im Jahre 1995 erschien das sehr erfolgreiche Windows 95, das die alten 16-Bit Schnittstellen (jetzt Win16 benannt) um 32-Bit Schnittstellen (Win32c) erweiterte und auch sonst Verbesserungen bot. Es setzte immer noch auf MS-DOS auf und konnte sowohl DOS-Programme, ältere Win16-Anwendungen als auch neue Win32c-Anwendungen ausführen. Zugriffsschutz und Speicherverwaltung waren größtenteils nicht vorhanden bzw. sehr rudimentär implementiert. Fehlerhafte Anwendungen oder Gerätetreiber konnten so das System gefährden. Die explosionsartige Verbreitung neuer Erweiterungskarten (Stichwort Plug-and-Play) kombiniert mit dem recht einfachen Design sorgte darüber hinaus für Inkompatibilitäten. Insgesamt brachte dies dem System den Ruf der Instabilität ein.
Trotzdem war das System sehr erfolgreich. Insbesondere von der Möglichkeit direkt auf die Hardware zuzugreifen machten Anwendungen wie Spiele Gebrauch. Die Leistungsfähigkeit der verfügbaren Grafikhardware wurde mit der Zeit beachtlich.
Das MS-DOS und BIOS-Design der PCs erlaubten keine Weiterentwicklung in Richtung moderner Serverbetriebssysteme. Microsoft begann Anfang der 1990er ein solches Betriebssystem zu entwickeln, das zunächst als Weiterentwicklung von OS/2 geplant war. Letztendlich erschien es aber unter dem Namen Windows NT (NT für New Technology).
Das System sollte portabel und zuverlässig und damit den damaligen Serverbetriebssystemen mindestens ebenbürtig sein. Über die Hardware wurde eine Abstraktionsschicht, der Hardware Abstraction Layer (HAL) gelegt, auf den der Kernel aufsetzte. Verschiedene Gerätetreiber waren als Kernmodule ausgeführt und liefen wie der Kernel im privilegierten Kernel Mode. Sie stellten Möglichkeiten der E/A-Verwaltung, Dateisystem, Netzwerk, Sicherheitsmechanismen, virtuellen Speicher usw. zur Verfügung. Systemdienste (System Services) ergänzten das Konzept; wie ihre UNIX-Pendents, die daemons, waren sie in Form von Prozessen im User-Mode ausgeführt.
Abstraktionsschichten unter Windows NT (etwas vereinfacht)
Über so genannte Personalities wurden dann die Schnittstellen bestehender Systeme nachgebildet, zunächst für Microsofts eigenes, neues Win32-System, aber auch für OS/2 (ohne Grafik) und POSIX.1, also einer Norm, die eigentlich Unix-Systeme vereinheitlichen sollte. Personalities liefen wie Anwenderprogramme im unprivilegierten User-Mode. Das DOS-Subsystem war in Form von Prozessen implementiert, die jeweils einen kompletten PC mit MS-DOS als virtuelle Maschine darstellten; darauf konnte mit einer besonderen Version von Windows 3.1, dem Windows-on-Windows, auch Win16-Programme ausgeführt werden. Windows-on-Windows blendete dazu die Fenster der Win16-Programme in das Win32-Subsystem ein, das die Grafikausgabe verwaltete. Das System erlaubte daher die Ausführung von Programmen sowohl für MS-DOS wie für die älteren Windows-Betriebssysteme, allerdings unter vollkommener Kontrolle des Betriebssystems. Dies galt aber nur für die Implementierung für Intel 80386 Prozessoren und dessen Nachfolger.
Programme, die direkt auf die Hardware zugriffen, blieben aber außen vor. Insbesondere viele Spiele konnten daher nicht unter Windows NT ausgeführt werden, zumindest bis zur Vorstellung von WinG, das später in DirectX umgetauft wurde. Ohne die Möglichkeit eines direkten Zugriffs auf die Grafikhardware bzw. -treiber war die Programmierung von leistungsfähigen Actionspielen zunächst auf die älteren Windows-Versionen beschränkt.
Windows NT erschien in den Versionen 3.1, 3.5, 3.51 und 4.0. Windows 2000 stellte eine Weiterentwicklung von Windows NT dar. Auch Windows XP, Windows Server 2003 und Windows Codename Longhorn bauen auf der Struktur von Windows NT auf.
Betriebssystemarten
Programme, Speicher- und Geräteverwaltung
Als Gerät aus der Sicht eines Betriebssystems bezeichnet man aus historischen Gründen alles, was über Ein-/Ausgabekanäle angesprochen wird. Dies sind nicht nur Geräte im herkömmlichen Sinn, sondern mittlerweile auch interne Erweiterungen wie Grafikkarten, Netzwerkkarten und anderes. Die (Unter-)Programme zur Initialisierung und Ansteuerung dieser "Geräte" bezeichnet man zusammenfassend als Gerätetreiber.Dienstprogramme und Anwendungsprogramme
Betriebsmittelverwaltung und Abstraktion
Einführendes Beispiel: Zeitgeberbausteine
Virtuelle Prozessoren
Virtuelle Zeitgeber
Abstraktion
Virtualisierung weiterer Betriebsmittel
Dateisysteme
Interner Speicher
Netzwerk
Bildschirm
Beispiele
Der C64, ein Heimcomputer der 1980er Jahre
DOS, ein Diskettenbetriebssystem
Linux (GNU/Linux), ein modernes Mehrprogrammsystem
Windows (MS-DOS Erweiterung)
Bildschirmfoto von Windows 1.03
Bildschirmfoto von Windows 3.xWindows NT
Siehe auch
Weblinks
Literatur