# Betriebssystemkerne > Gute **Architektur** sagt und _warum_ etwas getan wurde. > Nicht _wie_ und nicht _wann_ und _wer_. ## Der Betriebssystemkern - Enthält grundlegende Funktionen des Betriebssystems - Systemaufrufe - Benutzerverwaltung - Prozessverwaltung inklusive Ausführungsreihenfolge ([Scheduling](06_prozessstruktur.md#zeitliche-ausf-hrung-von-prozessen)) - Interprozesskommunikation - Prozessumschalter ([Dispatcher](06_prozessstruktur.md#zeitliche-ausf-hrung-von-prozessen)) - Gerätetreiber - [Speicherverwaltung](06_prozessstruktur.md#prozesse-im-speicher) - Dateisysteme zur Verwaltung von Dateien auf Speicherlaufwerken - Ist die Schnittstelle zur Hardware des Computers - Funktionalitäten im BS-Kern haben vollen Hardwarezugriff - Funktionalitäten laufen als Prozess im Adressraum des Kerns - Funktionalitäten müssen nicht zwingend im Kern positioniert sein, sie können auch über Dienste bereitgestellt werden (Architektur) ## Übersicht Betriebssystem ![image_17.png](image_17.png) ### Betriebssystemkern - Der **Kernel-Bereich** ist privilegiert ### Die Anwendungsschicht - Der **User-Bereich** ist nicht privilegiert, kann aber darauf aufbauende Funktionalitäten bereitstellen - Zugriff auf die Hardware erfolgt alleinig durch die im _Kernel_ bereitgestellten Funktionalitäten (System-Calls) ## Kernarten ### Monolitische Kerne Ein Monolith enthält alle Funktionalitäten eines Betriebssystems | Pro | Con | |-------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| | Bessere **Ausführungsgeschwindigkeit** da weniger _Prozesswechsel_ notwendig sind | Abgestürzte Komponenten des Kerns können nicht separat neu gestartet werden -> können das gesamte BS zum Absturz bringen | | Durch jahrelange Entwicklungstätigkeit ist eine gewachsene **Stabilität** vorhanden | | ### Minimale Kerne (Microkernel) Hier befinden sich nur die nötigsten Funktionen im Kernel | Pro | Con | |--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| | Alle weiteren Funktionalitäten laufen als _Dienste_ bzw. _Server_ im User-Modus | Abgestürzte Komponenten des Kerns können nicht separat neu gestartet werden -> können das gesamte BS zum Absturz bringen | | Ausgelagerte Funktionalitäten sind leichter austauschbar, bietet bessere _Stabilität_ und _Sicherheit_ | | ### Hybride Kerne Enthalten Komponenten, die, aus Geschwindigkeitsgründen, zusätzlich in den Kernel aufgenommen werden | Pro | Con | |-------------------------------------------|-----------------------------------------------------------------------------------------------------------------| | höhere Geschwindigkeit als minimale Kerne | keine klare Definition, was in den Kernel integiert wird | | höhere Stabilität als monolithische Kerne | Systeme differieren stark -> kann zu einer fehlenden Unterstützung der Hardware- und Software-Hersteller führen | ### Vergleich monolithischer Kern / minimaler Kern ![image_18.png](image_18.png) ## Alternative Architekturen _Flaschenhals_ alle bestehenden Systeme liegt in ihren Schichtenmodellen - Anwendung hat _keinen direkten Zugriff auf Hardware_ - _Kommunikation und Datenfluss_ wird über Bibliotheken und deren Kernel abgewickelt - _Zugangskontrolle_ weiterhin über Bibliotheken und Kernel ## Programmierschnittstellen **Systemaufruf (System Call)** ist eine API, die es ermöglicht auf Dienste und Ressourcen des BS zuzugreifen - Implementierung von Systemaufrufen hängt stark von _Hardware_, _Architektur_, _BS_ ab - ![image_19.png](image_19.png) - Wann werden die benutzt? - Berechtigungen, Ressourcenverwaltung, Kommunikation mit Hardware, Prozesssteuerung, Netzwerkkommunikation, Zeitverwaltung - Nutzung eines direkten Systemaufrufs **nicht empfehlenswert** - Software ist schlecht portierbar - Auf Funktionen von Bibliotheken zurückgreifen - befinden sich mit entsprechenden Wrapper-Funktionen logisch zwischen Benutzer- und BS-Kern