Vermittler zur Hardware
Eine der ersten Aufgaben eines Betriebssystems ist die Vermittlung zwischen Anwendung und Hardware.Konzept Computer ohne Betriebssystem
In den ersten einfachen Computern gab es kein Betriebssystem. Das Anwendungsprogramm musste selbst wissen, wie die Hardware angesprochen wurde. Beispielsweise war die Tastatur über eine Adresse erreicht. War beispielsweise das High-Bit gesetzt, lag ein neuer Tastendruck vor und konnte von der Anwendung verarbeitet werden.
Benötigt die Anwendung mehrere Tasten, liest sie die Adresse der Tastatur in
einer Schleife bis sich der Wert ändert. Das belastet die CPU, war aber in
jener Zeit unkritisch, weil die CPU in einem Single-Tasking-System eh keine
andere Aufgabe hatte und die CPUs noch nicht überhitzten.
Eine Monitorausgabe konnte erreicht werden, indem ein bestimmter Adressraum
dem Bildschirminhalt entsprach. Durch Setzen von Werten wurde der
Bilschirminhalt verändert.
Dieses Verfahren nennt man Busy Waiting.
Festplatte, Diskette oder andere Block-Devices: Die Anwendung übergibt dem Microcontroller die gewünschte Blocknummer und erhält als Antwort den entsprechenden Block vom Massenspeicher im Arbeitsspeicher.
Konzept Betriebssystem als API zur Hardware
Zwischen die Anwendung und die Hardware schob sich bei den Home-Computer der 1980er Jahre ein Minimalbetriebssystem, dass sich meist im ROM befand. Dieses besaß Einsprungadressen für Funktionen, mit denen die Hardware einfacher bedient werden konnte. Beispielsweise konnte eine solche Funktion eine Eingabezeile von der Tastatur lesen.Damit wurden Hardware-Besonderheiten wie Controller vor der Anwendung verborgen. Häufig wurde auch innerhalb des ROMs Immer noch Busy Waiting praktiziert.
API: Application Programming Interface
Konzept Multi-Tasking-Betriebssystem kontrolliert Prozesse
- Umschalten zwischen Prozessen: Scheduler verwaltet Prozessschlange
- Busy Waiting nicht möglich, stattdessen Listener
- Wartenden Prozess schlafen legen.
- Hardware löst Interrupt aus
- Prozess erhält Info und wird wieder aktiv
- Hauptspeicher muss zwischen Prozessen aufgeteilt werden.
- Interprozesskommunikation, bspw. Sockets
Prozesse, Kernel und Treiber
- Betriebssystem beendet übergriffige oder fehlerhafte Prozesse.
- Kernel ist gegen Prozesse geschützt. Ein Prozess kann nicht das Betriebssystem beenden (Bluescreen)
- Ein fehlerhafter Treiber kann das Betriebssystem zum Absturz bringen.
Ein Betriebssystem ...
- ... verwaltet die Ressourcen eines Computers
- ... verwaltet die laufenden Anwendungen (Prozesse)
- ... stellt den Anwendungen eine einheitliche Schnittstelle (API) zu den Ressourcen zur Verfügung
- Hardware wird durch \kursiv{Treiber} mit dem Betriebssystem verbunden.
- Treiber werden in \kursiv{Geräteklassen} eingeordnet (bspw Massenspeicher)
- Unterschiedliche Treiber behandeln die Besonderheiten des Geräts an die Erfordernisse der Geräteklasse.
- Treiber können vom Hersteller angeboten werden
- Treiber können vom Betriebssystem gestellt werden.
Dateisystem
Die Hardware von Massenspeichern (Laufwerk, SSD, USB-Stick) stellt durchnummerierte Blöcke zur Verfügung.Anwendungen speichern ihre Daten dauerhaft in Dateien.
Dazu, stellt das Betriebssystem Dateisysteme zur Verfügung, die die Blöcke so ordnen, dass sie als Dateien und Verzeichnisse angesprochen werden können.
Typische Vertreter von Dateisystemen
- FAT (MS-DOS) für USB-Sticks
- ext für Linux
- NTFS für aktuelle Windowssysteme
Benutzer
Multiuser-Betriebssysteme erlauben in der Regel mehreren Benutzern den Zugriff.- Mehrere Benutzer (nicht zwingend gleichzeitig), ggf. Gruppen
- Dateien und Verzeichnisse gehören einzelnen Benutzern oder Gruppen
- Dateien und Verzeichnisse erhalten Lese- und Schreibrechte, um Daten gegenüber anderen Benutzern zu schützen.
- Betriebssystemstrukturen müssen vor Anwendern geschützt werden.
Netzwerke
Der Netzwerkstapel, beispielsweise TCP/IP, verbirgt die Netzwerkgerätetreiber.- Je ein Treiber für Ethernet, WLAN, Bluetooth, ...
- Mehrere Ethernetschnittstellen werden durch denselbsen Treiber bedient. Die Schnittstelle muss über einen Identifier benannt werden.
- Die Treiber haben eine gleichförmige Schnittstelle zum Netzwerkstapel.
Desktops und Shells
Grafische Oberflächen zählt man üblicherweise nicht zum Betriebssystem. Sie stellen, wie Kommandozeilen (sogenannten Shells) dem Benutzer die Möglichkeiten, auf die API zuzugreifen, um beispielsweise Dateien zu kopieren oder Programme zu starten.
Exkurs: Betriebssystem-Geschichte
- [1964] OS/360 Lochkartensystem von IBM für ihre Modellreihe System/360.
- [1969] Erste Implementierung von MULTICS durch MIT, General Electric und AT\&T. Statt in Assembler wurde in PL/I programmiert. Dadurch hardwareunabhängig.
- [1970] UNIX: auf der Idee von MULTICS entstandenes portables Multiuser/Multitasking-Betriebssystem für Zentralrechner. Für die Entwicklung von UNIX wurde die Programmiersprache C geschaffen.
- [1972] TCP/IP: 1972 erste Entwicklung. 1975 Netzwerke zwischen Stanford und University College London. Basis UNIX und C.
- [1977] Apple II -- Personal-Computer statt Zentral-Computer. Minimal-Betriebssystem (Apple-DOS, CP/M) mit Programmiersprachen-Interpreter (BASIC) im ROM.
- [1980] MS-DOS (QDOS): 1980 als Implementierung von CP/M auf der 8086-CPU entstandenes Singleuser/Singletasking-Betriebssystem.
- [1984] Mac: 1984 erster kommerziell erfolgreiches System (Singletasking) mit grafischer Oberfläche.
- [1985] Windows 1.0: 1985 erster Versuch eines Mac-Plagiats für MS-DOS.
- [1990] Windows 3.0: 1990 erste erfolgreiche Version mit geringfügigen Multitasking-Fähigkeiten.
- [1991] Linux: Erstveröffentlichung.
- [1992] FreeBSD: Das kommerzielle BSD wird Open-Source,
- [1993] Windows NT: 1993 als Konkurrenz zu Novell Netware als Dateiserver. Erstmals Multiuser, erstmals auch TCP/IP out of the box.
- [1998] MacOS X: Das Betriebssystem des Mac basiert auf einem BSD-UNIX, das von Steve Jobs bereits auf NextStep verwendet wurde.