update
This commit is contained in:
75
Writerside/topics/BS/04_Betriebssystemkerne.md
Normal file
75
Writerside/topics/BS/04_Betriebssystemkerne.md
Normal file
@ -0,0 +1,75 @@
|
||||
# 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
|
||||

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

|
||||
|
||||
## 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
|
||||
- 
|
||||
- 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
|
Reference in New Issue
Block a user