Kernel (Betriebssystem)
Ein Kernel [Betriebssystems. In ihm ist die Prozess- und Datenorganisation festgelegt, auf der alle weiteren Softwarebestandteile des Betriebssystems aufbauen. Die Konstruktion eines stabilen Kernels ist eine Aufgabe aus dem Bereich der Informatik und des Softwareengineering.
] oder Kern ist der zentrale Bestandteil einesGängige Anforderungen an einen Kernel sind Parallelverarbeitung verschiedener Aufgaben (Multitasking), Einhaltung zeitkritischer Grenzen, Offenheit für unterschiedlichste Anwendungen und Erweiterungen.
Beispiel: Linux-Kernel, von Linus Torvalds 1991 erstellt und seitdem als Open Source-Projekt weltweit weiterentwickelt.
Bestandteile
Ein Kernel ist in Schichten aufgebaut, wobei die unteren (maschinennäheren) Schichten die Basis für die oberen (maschinenferneren) Schichten bilden. Die oberen Schichten können die Funktionen der unteren Schichten aufrufen, aber nicht umgekehrt.
Folgende Schichten sind vorhanden (von unten nach oben):
- Schnittstelle zur Hardware (Geräte, Speicher, Prozessoren)
- Prozessorverwaltung (auch Dispatcher genannt)
- Speicherverwaltung (evtl. einschließlich virtuellem Hauptspeicher)
- Prozessverwaltung (auch Scheduler genannt)
- Geräteverwaltung (auch Device Management genannt)
- Dateisysteme
Wenn alle diese Funktionen im Kernel selbst vorhanden sind, spricht man von einem monolithischen Kernel. Bei einem Mikrokernel finden wesentliche Teile in getrennten Prozessen statt. Daneben, bzw. zwischen den beiden liegend, gibt es noch den sogenannten Makrokernel.
Auf jeden Fall außerhalb des Kernels laufen die Anwenderprozesse, die sich der vom Kernel angebotenen Funktionen bedienen, um mit der Maschine zu kommunizieren.
Aufgaben eines Kernels
Ein Kernel hat die folgenden Aufgaben:
- Schnittstelle zu Anwenderprogrammen (Starten, Beenden, Ein-/Ausgabe, Speicherzugriff)
- Kontrolle des Zugriffs auf Prozessor, Geräte, Speicher (Scheduler, Gerätetreiber, Speicherschutz). Möglichst alleiniger Zugriff des Kernels auf diese Ressourcen.
- Verteilung der Ressourcen, etwa der Prozessorzeit(en) (bzw. der Prozessoren) auf die Anwenderprogramme
- Strukturierung der Ressourcen, etwa Abbildung von Dateisystemen auf blockorientierte Geräte wie Festplatten, Netzwerkprotokollstapel auf Netzwerkkarten.
- Auflösung von Zugriffskonflikten, etwa Verriegelung bei Mehrprozessorsystemen, Warteschlangen bei knappen Ressourcen
- Virtualisierung der Ressourcen (Prozessor: Prozesse, Festplatte: Dateien, Netzwerkkarte: z. B. Sockets, Speicher: virtueller Speicher, Geräte: Spezialdateien)
- Überwachung von Zugriffsrechten auf Dateien und Geräte bei Mehrbenutzersystemen
Prozesse
Zur Realisierung eines Betriebssystems wird oft das Konzept eines Prozesses (oder auch einer Task) verwendet. Ein Prozess enthält (mindestens) einen Registersatz des Prozessors und kann über den Scheduler angehalten und wieder gestartet werden. Jeder Prozess hat daneben kontrollierten Zugriff auf einen Teil des Speichers sowie Ein- und Ausgabekanäle, die auf Dateien oder Geräte zugreifen. Mit dem Kernel kommuniziert er über Systemaufrufe. Ein Anwenderprogramm läuft normalerweise in genau einem, in Ausnahmefällen auch in mehreren Prozessen. Auch manche Systemdienste laufen innerhalb von Prozessen.
Starten
Beim Starten eines Computers wird nach einem eventuellen Hardwarecheck und einer teilweisen Geräteinitialiserung der Kernel in den Speicher geladen und gestartet. Er initialisiert die Geräte vollständig und startet den ersten Prozess, bei einfachen Systemen wie MSDOS einen Kommandozeileninterpreter, bei Mehrprozesssystemen einen bestimmten Prozess (bei Linux/Unix init), der die Systemdienste (als Prozesse) lädt und wieder, evtl. nach Eingabe von Namen und Passwort, einen oder mehre Kommandointerpreter oder eine graphische Benutzeroberfläche als Prozesse startet. Danach übernimmt er mit Hilfe der Systemaufrufe das Starten/Stoppen von weiteren Prozessen (Anwenderprogrammen) sowie die Zuteilung von Speicher und Ein-/Ausgabekanälen auf die einzelnen Prozesse.
Kernelarten
Können auf einen Kernel mehrere Prozesse gleichzeitig laufen, spricht man von Multitasking-Kernen. Wird ein Multitasking-Kernel durch eine Zugriffsverwaltung auf Prozesse und Geräte ergänzt, erhält man ein Mulituser-(oder Mehrbenutzer-)System. Hierauf können mehrere Benutzer gleichzeitig arbeiten. Jeder Benutzer muss sich einloggen (Authentifizierung). Der Kernel teilt jedem Prozess einem Benutzer zu, jeder Benutzer kann jedoch mehrere Prozesse besitzen. Abhängig vom Benutzer werden Prozessrechte eingeschränkt. Der Kernel ist für die Separation der Prozesse und damit der Benutzer zuständig.
Obwohl heutige Desktopsysteme in der Regel nur von einem Benutzer gleichzeitig verwendet werden, sind sie als Mehrbenutzersystem ausgelegt. Dies nicht nur deswegen, weil dann mehrere Nutzer mit jeweils eigenen Präferenzen das System verwenden können. Zusätzlich werden die Systemdienste unter anonymen Benutzern gestartet. Jedem Systemdienst und jedem Benutzer können dadurch eigene, eingeschränkte Zugriffsrechte eingeräumt werden, die für die Arbeit nötig sind. Die Systemsicherheit wird dadurch drastisch erhöht.