Zum Inhalt springen

Betriebssystem

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 22. Dezember 2003 um 08:04 Uhr durch Ninjamask (Diskussion | Beiträge) (simple:Operating system). Sie kann sich erheblich von der aktuellen Version unterscheiden.


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 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 Betriebssysteme 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. 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 Echt-Zeit Betriebssystem, 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 Echtzeit-BS QNX, das in den meisten Geldautomaten residiert.


Siehe auch: Liste der Betriebssysteme

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.


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

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 (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 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.


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 (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.

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

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.

Dateisysteme

Ü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.

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.

Bildschirm

Grafikfähige Bildschirmmonitore erlauben die Aufteilung in - auch überlappende - Fenster, die als virtuelle Bildschirme aufgefasst werden können. Ein grafisches Benutzerinterface entsteht, wenn man die Abstraktion zunächst um Routinen geometrischer Elementen wie Linien, Kreise, Ellipsen, danach Texte und Farben sowie dann Knöpfe, Menüs, usw. ergänzt. Die Grafikkarte als Hardware ist für den Programmierer und Anwender vollkommen verborgen.

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 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

Abstraktionsschichten im Betriebssystem des Heimcomputers C64

DOS, 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 (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 Informationseinheite) belegen einen oder mehrere (verkettet) dieser Cluster. Eine Diskette kann viele Dateien enthalten, die über Namen erreichbar sind. 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 ist kein Speicherschutz realisiert, die Programme können daher an MS-DOS vorbei direkt auf BIOS und sogar auf die Hardware zugreifen. MS-DOS stellt auch keinen für alle Zwecke ausreichenden Abstraktionsgrad zu Verfügung. Es lässt sich nur ein gleichzeitig Programm starten, die Speicherverwaltung ist eher rudimentär. Ein Teil der Hardware wird nicht unterstützt und muss von Programmen direkt angesprochen werden. 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 wird mit einem Satz von Programmen (so genannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.

Abstraktionsschichten eines PC unter DOS

Abstraktionsschichten eines PC unter DOS

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

Abstraktionsschichten unter Linux

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.

Windows (MS-DOS Erweiterung)

Screenshot von Windows 3.x
Screenshot von Windows 3.x

1983 begann die Firma Microsoft mit der Entwicklung eines grafikfähigen Betriebssystemaufsatzes für MS-DOS namens Windows. Das Dateisystem von DOS und die Gerätetreiber des BIOS wurden um Ansteuerung und Elemente einer Benutzeroberfläche sowie weitere Treiber unter anderem für eine Computermaus ergänzt.

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. Aber erst Windows 3.1 das im April 1992 erschien lief auch auf den meisten PCs einigermaßen stabil und wurde nicht zuletzt durch die Unterstützung vieler anderer Softwarehersteller und Programmierer auch zum ersten kommerziellen Erfolg. Damit setzte sich Windows auch gegen das Konkurrenzprodukt OS/2 durch.

Das System wurde noch 1992 im Oktober 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 verbesserte 32-Bit Schnittstellen (Win32) erweiterte und auch sonst Verbesserungen bot. Es setzte immer noch auf MS-DOS auf und konnte DOS-Programme, ältere Win16-Anwendungen und neue Win32-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 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.

Windows NT

Das MS-DOS und BIOS-Design der PCs erlaubten keine Weiterentwicklung in Richtung moderner Serverbetriebssysteme. Microsoft begann früh, ein solches Betriebssystem zu entwickeln, das zunächst unter dem Namen Windows NT (NT für New Technology) erschien.

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 Mach-Mikrokernel aufsetzte. Verschiedene Systemdienste (System Services) liefen wie der Kernel im privilegierten Kernel Mode und stellten Möglichkeiten der E/A-Verwaltung, Dateisystem, Netzwerk, Sicherheitsmechanismen, virtuellen Speicher usw. zur Verfügung.


Abstraktionsschichten unter Windows NT

Abstraktionsschichten unter Windows NT (etwas vereinfacht)

Über so genannte Personalities wurden dann die Schnittstellen bestehender Systeme nachgebildet, zunächst für Microsofts eigenes Win32-System aus den alten Windows-Versionen, aber auch für OS/2 (ohne Grafik) und POSIX.1, also einer Untermenge von Unix, allerdings ohne Netzwerk und Grafik. Personalities liefen wie Anwenderprogramme im unprivilegierten User-Mode. Auf das Win32-System wurden dann Adapter für DOS- und Win16-Programme (so genanntes Windows on Windows) aufgesetzt. 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 Spiele konnten daher nicht unter Windows NT ausgeführt werden. Ohne die Möglichkeit eines direkten Zugriffs auf die Grafikhardware bzw. -treiber war die Programmierung von leistungsfähigen Actionspielen auf die älteren Windows-Versionen beschränkt.

Windows NT erschien in verschiedenen Versionen. Windows 2000 stellte eine Weiterentwicklung von Windows NT dar. Auch Windows XP baut auf der Struktur von Windows NT auf.


Siehe auch: Liste der Betriebssysteme, Entwicklung der heutigen Betriebssysteme


Literatur

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