Betriebssystem | geschichte

Geschichte

Erste Betriebssysteme (bis 1980)

Die ersten Computer kamen ohne echtes Betriebssystem aus, da lediglich ein einziges Programm im Stapelbetrieb geladen sein konnte und die unterstützte Hardware noch sehr überschaubar war. Als Betriebssystem-Vorläufer gilt der 1956 in Gestalt des GM-NAA I/O bei General Motors für die IBM 704 erfundene resident monitor, ein Stück Software, das nach Beendigung eines Stapelauftrags den Folgeauftrag automatisch startete. 1959 entstand daraus das SHARE Operating System (SOS), das bereits über eine rudimentäre Ressourcenverwaltung verfügte.[11] Dessen Nachfolger IBSYS verfügte bereits über eine einfache Shell mit Kommandosprache.[12]

1961 entstand mit dem Compatible Timesharing System (CTSS) für die IBM 7094 am MIT das erste Betriebssystem für Mehrbenutzerbetrieb. Das ermöglichte die quasi-gleichzeitige Benutzung der Rechenanlage durch mehrere Anwender mittels angeschlossener Terminals.[13] Eine Vielzahl gleichzeitig geladener Programme erforderte es, die von ihnen beanspruchten Speicherbereiche voneinander abzugrenzen. Als Lösung entstand 1956 an der TU Berlin der Virtuelle Speicher[14] und wurde Mitte der 1960er Jahre erstmals in Großrechner-Betriebssystemen umgesetzt.

Damals lieferte meist der Hersteller der Hardware das Betriebssystem, das nur auf einer bestimmten Modellreihe, ja sogar nur auf einem bestimmten System lief, sodass Programme weder zwischen verschiedenen Computern, noch über verschiedene Generationen hinweg portierbar waren. Mit der Einführung der Modellreihe System/360 von IBM führte IBM 1964 das Betriebssystem OS/360 in verschiedenen Versionen (OS/360 für rein lochkartenbasierte Systeme, TOS/360 für Maschinen mit Bandlaufwerken, DOS/360 für solche mit Festplatten) ein. Es war das erste Betriebssystem, das modellreihenübergreifend eingesetzt wurde.

Ab 1963 wurde Multics in Zusammenarbeit von MIT, General Electric und den Bell Laboratories (Bell Labs) von AT&T entwickelt, das jedoch erst ab 1969 bis 2000 im Einsatz war. Multics wurde in PL/I programmiert. Inspiriert von den Arbeiten an Multics startete eine Gruppe um Ken Thompson und Dennis Ritchie an den Bell Labs 1969 mit der Entwicklung von Unix. Unix wurde in den Jahren 1972–1974 bis auf wenige Teile in der höheren Programmiersprache C mit dem Ziel der Portabilität neu implementiert, um auf der damals neuen PDP-11 lauffähig zu sein. In weiterer Folge entwickelte sich UNIX zu einer ganzen Familie von Systemen für verschiedenste Hardwareplattformen.

Die ersten PCs wie der Altair 8800 von 1975 verfügten zunächst über kein Betriebssystem. Daher mussten sämtliche Aktionen in einem reinen Maschinencode eingegeben werden. Sein erstes Betriebssystem erhielt der Altair 8800 in Form eines BASIC-Interpreters.[15] Dieser stellte sowohl eine Programmierumgebung dar als auch die allgemeine Schnittstelle zwischen dem Benutzer und der Hardware (die dieser Interpreter direkt ansteuerte). Er war Laufzeitumgebung und Benutzerschnittstelle zugleich; über bestimmte Befehle konnte der Benutzer beispielsweise Daten laden und speichern und Programme ausführen. 1974 erfand Gary Kildall CP/M, das als erstes universelles PC-Betriebssystem gilt. Durch seine modulare Bauweise (der plattformunabhängige Kernel BDOS setzte auf einer Hardware-Treiberschicht namens BIOS auf) ließ es sich mit vertretbarem Aufwand auf zahlreiche zueinander inkompatible PC-Plattformen portieren. Eine Programmierumgebung steuerte nun (meistens) nicht mehr die Hardware direkt an, sondern nutzte die Schnittstellen des Betriebssystems. Daher war auch die Programmierumgebung nicht mehr nur auf einer bestimmten Hardware lauffähig, sondern auf zahlreichen PCs.

Für die aufkommende Computergrafik reichten rein textbasierte Benutzerschnittstellen nicht mehr aus. Die 1973 eingeführte Xerox Alto war das erste Computersystem mit einem objektorientierten Betriebssystem[16] und einer grafischen Benutzeroberfläche, was diesen Rechner für Desktop-Publishing geeignet machte und einen großen Fortschritt in Sachen Benutzerfreundlichkeit darstellte.[17]

Meilensteine

Der C64, ein Heimcomputer der 1980er Jahre

C64C-System mit VC1541-II-Diskettenlaufwerk und 1084S RGB-Monitor (1986)

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 64 KiB RAM, einer Tastatur und einem Monitor- bzw. HF-Ausgang. Einer der populärsten dieser Computer war der Commodore C64 mit dem Mikroprozessor 6510 (einer Variante des 6502). Dieser Computer verfügte über einen in einem 8 KiB-ROM Systemkern namens Kernal mitsamt einem BIOS (Basic Input/Output System), das die Geräte Bildschirm, Tastatur, serielle IEC-Schnittstelle für Diskettenlaufwerke bzw. Drucker, Kassetteninterface initialisierte und über ein Kanalkonzept teilweise abstrahierte. Über ein 8 KiB-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.

Basic-Programm Maschinensprachenprogramm
8k ROM BASIC PRINT#,FOR
8k ROM-BIOS (Gerätetreiber) / Kernal / JSR Maschinensprachenprogramm
Hardware (Prozessor(en), Speicher, Geräte)

Abstraktionsschichten im Betriebssystem des Heimcomputers C64

Die grafische Benutzeroberfläche (GUI) von Apple

Beispiel für eine grafische Benutzeroberfläche

Xerox entwickelte im Palo Alto Research Center (PARC) das Smalltalk-Entwicklungssystem (Xerox entwickelte mit ALTO (1973) und Star (1981) erste Rechner mit grafischer Benutzeroberfläche). Das Unternehmen Apple bot Xerox an, die Technologie zu kaufen; da PARC aber vor allem ein Forschungszentrum war, bestand kein Interesse an Verkauf und Vermarktung. Nachdem Apple-Chef Steve Jobs Xerox Aktienanteile von Apple anbot, wurde ihm erlaubt, einigen Apple-Entwicklern die Xerox-Demos zu zeigen. Danach war den Apple-Entwicklern auf jeden Fall klar, dass der grafischen Benutzeroberfläche die Zukunft gehörte, und Apple begann, eine eigene grafische Benutzeroberfläche zu entwickeln.

Viele Merkmale und Prinzipien jeder modernen grafischen Benutzeroberfläche für Computer, wie wir sie heute kennen, sind originale Apple-Entwicklungen (Pull-down-Menüs, die Schreibtischmetapher, Drag and Drop, Doppelklicken). Die Behauptung, Apple habe seine GUI von Xerox illegal kopiert, ist ein ständiger Streitpunkt; es existieren jedoch gravierende Unterschiede zwischen einem Alto von Xerox und der Lisa/dem Macintosh.

Der Mac-OS-Nachfolger

Apple-I-Computer

Mitte der 1990er Jahre steckte das Unternehmen Apple in einer tiefen Krise; es schien kurz vor dem Ruin. Ein dringliches Problem war dabei, dass Apples Betriebssystem Mac OS als veraltet galt, weshalb sich Apple nach Alternativen umzusehen begann. Nach dem Scheitern des wichtigsten Projektes für ein modernes Betriebssystem mit dem Codenamen Copland sah sich Apple gezwungen, Ausschau nach einem für die eigenen Zwecke verwendbaren Nachfolger zu halten. Zuerst wurde vermutet, dass Apple das Unternehmen Be, mit ihrem auch auf Macs lauffähigen Betriebssystem BeOS, übernehmen würde. Die Übernahmeverhandlungen scheiterten jedoch im November 1996, da der frühere Apple-Manager und Chef von Be Jean-Louis Gassée im Falle einer Übernahme 300 Millionen US-Dollar und einen Sitz im Vorstand verlangte. Da Gil Amelio versprochen hatte, bis zur Macworld Expo im Januar 1997 die zukünftige Strategie zu Mac OS zu verkünden, musste schnell eine Alternative gefunden werden. Überraschend übernahm Apple dann noch im Dezember 1996 für 400 Mio. US-Dollar das Unternehmen NeXT des geschassten Apple-Gründers Steve Jobs mitsamt dem Betriebssystem NeXTStep bzw. OPENSTEP, das Apples Grundlage für die nachfolgende neue Betriebssystem-Generation werden sollte. Unter dem Codenamen Rhapsody wurde es weiterentwickelt zu einem UNIX für Heim- und Bürocomputer mit dem Namen „Mac OS X“. Ab Version 10.5 ist es konform mit der Single UNIX Specification; später hieß es einfach „OS X“, inzwischen „macOS“.

Das Betriebssystem OPENSTEP war die erste Implementierung der OpenStep-Spezifikationen, die zusammen mit Sun entwickelt wurden. Deren Entwicklung hatte Einfluss auf Java und somit letztlich auf Android.

Disk Operating System (DOS)

Der Ursprung von DOS liegt in CP/M und wurde 1974 von Digital Research eingesetzt. Die Portierung auf den Motorola 68000, genannt CP/M-68k, selbst kein großer kommerzieller Erfolg, wurde zur Grundlage für TOS, dem Betriebssystem des Atari ST. MS-DOS Version 1.0 erschien 1981 als Nachbildung von CP/M und wurde für IBM-PCs eingesetzt. Es setzt auf das BIOS auf und stellt Dateisystemoperationen zur Verfügung.

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

Der PC konnte mit seinem Intel-8088-Prozessor (16-Bit-Register) bis zu 1 MiB Speicher adressieren, die ersten Modelle waren jedoch nur mit 64 KiB ausgestattet. Diskettenlaufwerke lösten die alten Kassettenrekorder als Speichermedium ab. Sie erlauben vielfaches Schreiben und Lesen einzeln adressierbarer 512-Byte-Blöcke. Die Benutzung wird durch ein Disk Operating System (DOS) vereinfacht, das ein abstraktes Dateikonzept bereitstellt. Blöcke können zu beliebig großen Clustern (Zuordnungseinheit – kleinste für das Betriebssystem ansprechbare Einheit) zusammengefasst werden. Dateien (logische Informationseinheiten) belegen einen oder mehrere dieser (verketteten) Cluster. Eine Diskette kann viele Dateien enthalten, die über Namen erreichbar sind.

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 keine für alle Zwecke ausreichende Abstraktion 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 über das Betriebssystem hinweg und schrieben z. B. direkt in den Bildschirmspeicher. MS-DOS wurde mit einem Satz von Programmen (sogenannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.

Anwenderprogramm (COMMAND.COM, WORDSTAR)
MSDOS (Dateisystem) INT Anwenderprogramm (COMMAND.COM, WORDSTAR)
BIOS (Gerätetreiber) INT Anwenderprogramm (COMMAND.COM, WORDSTAR)
Hardware (Prozessor(en), Speicher, Geräte)

Abstraktionsschichten eines PC unter DOS

Windows

1983 begann das Unternehmen Microsoft mit der Entwicklung einer grafischen Betriebssystem-Erweiterung („Grafik-Aufsatz“) für MS-DOS namens Windows. 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 (an dessen Entwicklung Microsoft zwischen 1987 und 1991 beteiligt war): Windows NT 3.1 (Juli 1993). Für den Consumer-Markt brachte Microsoft am 15. August 1995 Windows 95 heraus; es setzt auf MS-DOS auf. Dieser „Consumer-Zweig“ wurde mit der Veröffentlichung von Windows Millennium (August/September 2000) abgeschlossen.

Aufbau von Windows NT: Über die Hardware wurde eine Abstraktionsschicht, der Hardware Abstraction Layer (HAL) gelegt, auf den der Kernel aufsetzte. Verschiedene Gerätetreiber waren als Kernelmodule 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-Pendants, die daemons, waren sie in Form von Prozessen im User-Mode ausgeführt.

OS/2-
Programme
Win32-Anwendungen DOS-
Programme
Win16-
Programme
POSIX-
Programme
User Mode
Win32-Anwendungen Andere DLLs DOS-
System
Windows on
Windows
OS/2-
Subsystem
Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) POSIX-
Subsystem
Systemdienste Kernel Mode
Ein-/Ausgabe-Manager (Dateisystem, Netzwerk) Objektmanager/Security Resource Manager/Processmanager
Local Procedure Call Manager/Virtual Memory Manager

Mikrokernel
Window-Manager
Gerätetreiber Hardware-Abstraktions-Schicht (HAL) Grafiktreiber
Hardware (Prozessor(en), Speicher, Geräte)

Abstraktionsschichten unter Windows NT (etwas vereinfacht)

Über sogenannte 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 deren Nachfolger.

Programme, die direkt auf die Hardware zugreifen, 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 umbenannt 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, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2012, Windows 8 und Windows 10 bauen auf der Struktur von Windows NT auf.

Linux (GNU/Linux)

Linus Torvalds, Entwickler von Linux

1991 begann Linus Torvalds in Helsinki/Finnland mit der Entwicklung des Linux-Kernels, den er bald danach der Öffentlichkeit zur Verfügung stellte.

Es läuft als portables Betriebssystem auf verschiedenen Rechnerarchitekturen, wurde aber zunächst für PCs mit Intel-80386-Prozessor entwickelt. Das in diesen Rechnern verwendete BIOS dient nur noch zum Initialisieren der Hardware und zum Starten des Bootloaders, da die Routinen des BIOS für Multitaskingsysteme wie Linux ungeeignet sind. Dies kommt zustande, da insbesondere der Prozessor durch Warten belastet wird anstatt durch eine – in der Hardware durchaus vorhandene – geschickte Unterbrechungsverwaltung (interrupt handling) auf Ereignisse (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 Prozesse laufen im Benutzermodus (user mode), während der Kernel im Kernel-Modus (kernel mode) arbeitet. Die Privilegien im Benutzermodus sind sehr eingeschränkt. Ein direkter Zugriff wird nur sehr selten und unter genau kontrollierten Bedingungen gestattet. Dies hat den Vorteil, dass kein Programm z. B. durch einen Fehler das System zum Absturz bringen kann.

Linux stellt wie sein Vorbild Unix eine vollständige Abstraktion und Virtualisierung für nahezu alle Betriebsmittel bereit (z. B. virtueller Speicher, Illusion eines eigenen Prozessors).

Anwenderprogramme (bash, LibreOffice, Blender, 0 A.D.) User Mode
Complex Libraries (GLib, GTK+, Qt, SDL, EFL) Anwenderprogramme
Complex Libraries (GLib, kde) Simple Libraries sin, opendbm Anwenderprogramme
C-Standard-Bibliothek: glibc open, exec, sbrk, socket, fopen, calloc
Systemaufrufe TRAP, CALL, BRK, INT (je nach Hardware) Kernel Mode
Kernel (Gerätetreiber, Prozesse, Netzwerk, Dateisystem)
Hardware (Prozessor(en), Speicher, Geräte)

Fast vollständige Abstraktion unter Linux

In anderen Sprachen
Acèh: OS
Alemannisch: Betriebssystem
العربية: نظام تشغيل
azərbaycanca: Əməliyyat sistemi
žemaitėška: Uoperacėnė sėstema
беларуская (тарашкевіца)‎: Апэрацыйная сыстэма
Mìng-dĕ̤ng-ngṳ̄: Chŏ̤-cáuk hiê-tūng
Esperanto: Operaciumo
客家語/Hak-kâ-ngî: Chok-ngia̍p hì-thúng
hornjoserbsce: Dźěłowy system
Bahasa Indonesia: Sistem operasi
Interlingue: Operativ systema
íslenska: Stýrikerfi
Qaraqalpaqsha: Operatsion sistema
Taqbaylit: Anagraw n wammud
한국어: 운영 체제
Ripoarisch: Bedriefsystem
Lëtzebuergesch: Betribssystem
Lingua Franca Nova: Sistem de opera
македонски: Оперативен систем
Bahasa Melayu: Sistem pengendalian
Plattdüütsch: Bedriefssystem
नेपाल भाषा: अपरेटिङ सिस्टम
Nederlands: Besturingssysteem
norsk nynorsk: Operativsystem
Pälzisch: Betriebssystem
português: Sistema operativo
русиньскый: Операчна сістема
davvisámegiella: Operatiivavuogádat
srpskohrvatski / српскохрватски: Operativni sistem
Simple English: Operating system
slovenčina: Operačný systém
slovenščina: Operacijski sistem
Soomaaliga: Operating system
српски / srpski: Оперативни систем
Basa Sunda: Sistim Operasi
татарча/tatarça: Операцион система
oʻzbekcha/ўзбекча: Ishlatuv tizimi
Tiếng Việt: Hệ điều hành
吴语: 操作系统
中文: 操作系统
Bân-lâm-gú: Chok-gia̍p hē-thóng
粵語: 作業系統