„Kernel (Betriebssystem)“ – Versionsunterschied
| [gesichtete Version] | [gesichtete Version] |
HeicoH (Diskussion | Beiträge) K Änderungen von 178.202.116.4 (Diskussion) rückgängig gemacht (HG) |
Keine Belege, keine Quellen, inhaltlich naiv, teils veraltet und nicht gut geschrieben. Der Artikel hat einige Probleme. |
||
| Zeile 1: | Zeile 1: | ||
{{quellen}} |
|||
Ein '''Kernel''' (englisch [{{IPA|ˈkɝːnəl}}], übersetzt ''Kern''), auch '''Betriebssystemkern''' (oder verkürzt ''Systemkern''), ist der zentrale Bestandteil eines [[Betriebssystem]]s. In ihm ist die Prozess- und Datenorganisation festgelegt, auf der alle weiteren [[Software]]bestandteile des Betriebssystems aufbauen. Er bildet die unterste [[Schichtenarchitektur|Softwareschicht]] des Systems und hat direkten Zugriff auf die Hardware. Die Konstruktion eines Betriebssystem-Kernels gehört zum Themenbereich der [[Informatik]] und der [[Softwaretechnik]]. |
Ein '''Kernel''' (englisch [{{IPA|ˈkɝːnəl}}], übersetzt ''Kern''), auch '''Betriebssystemkern''' (oder verkürzt ''Systemkern''), ist der zentrale Bestandteil eines [[Betriebssystem]]s. In ihm ist die Prozess- und Datenorganisation festgelegt, auf der alle weiteren [[Software]]bestandteile des Betriebssystems aufbauen. Er bildet die unterste [[Schichtenarchitektur|Softwareschicht]] des Systems und hat direkten Zugriff auf die Hardware. Die Konstruktion eines Betriebssystem-Kernels gehört zum Themenbereich der [[Informatik]] und der [[Softwaretechnik]]. |
||
Gängige Anforderungen an einen |
Gängige Anforderungen an einen Kernel sind Parallelverarbeitung verschiedener Aufgaben ([[Multitasking]]), Einhaltung zeitkritischer Grenzen, Offenheit für unterschiedlichste Anwendungen und Erweiterungen. |
||
Nicht zum Kernel gehörende Teile werden als [[Ring (CPU)|Userland]] bezeichnet. |
Nicht zum Kernel gehörende Teile werden als [[Ring (CPU)|Userland]] bezeichnet. |
||
| Zeile 17: | Zeile 18: | ||
[[Datei:OS-structure.de.svg|miniatur|hochkant=2.5|Die Struktur von [[Monolithischer Kernel|monolithischem Kernel]], [[Mikrokernel]] und [[Hybridkernel]] im Vergleich.]] |
[[Datei:OS-structure.de.svg|miniatur|hochkant=2.5|Die Struktur von [[Monolithischer Kernel|monolithischem Kernel]], [[Mikrokernel]] und [[Hybridkernel]] im Vergleich.]] |
||
Wenn alle diese Funktionen im Kernel selbst integriert sind, spricht man von einem [[Monolithischer Kernel|monolithischen Kernel]]. Bei einem [[ |
Wenn alle diese Funktionen im Kernel selbst integriert sind, spricht man von einem [[Monolithischer Kernel|monolithischen Kernel]]. Bei einem [[Microkernel]] finden wesentliche Teile in getrennten [[Prozess (Informatik)|Prozessen]] statt. Daneben, bzw. zwischen den beiden liegend, gibt es noch den sogenannten [[Hybridkernel]] sowie als Sonderfall den [[Exokernel]], der konzeptionell auf dem Microkernel aufbaut. |
||
Auf jeden Fall laufen außerhalb des Kernels die [[Anwendungssoftware|Anwendungsprogramme]], die sich der vom Kernel angebotenen Funktionen bedienen, um mit der Maschine zu kommunizieren. |
Auf jeden Fall laufen außerhalb des Kernels die [[Anwendungssoftware|Anwendungsprogramme]], die sich der vom Kernel angebotenen Funktionen bedienen, um mit der Maschine zu kommunizieren. |
||
| Zeile 26: | Zeile 27: | ||
* Kontrolle des Zugriffs auf [[Prozessor]], Geräte, Speicher (Scheduler, Gerätetreiber, Speicherschutz). Möglichst alleiniger Zugriff des Kernels auf diese Ressourcen. |
* 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 |
* Verteilung der Ressourcen, etwa der Prozessorzeit(en) (bzw. der Prozessoren) auf die Anwenderprogramme |
||
* Strukturierung der Ressourcen, etwa Abbildung von [[Dateisystem]]en auf blockorientierte Geräte wie [[Festplattenlaufwerk]]e, [[ |
* Strukturierung der Ressourcen, etwa Abbildung von [[Dateisystem]]en auf blockorientierte Geräte wie [[Festplattenlaufwerk]]e, [[Protokollstapel|Netzwerkstack]] auf Netzwerkkarten. |
||
* Auflösung von Zugriffskonflikten, etwa Verriegelung bei Mehrprozessorsystemen, Warteschlangen bei knappen Ressourcen |
* Auflösung von Zugriffskonflikten, etwa [[Lock|Verriegelung]] bei Mehrprozessorsystemen, Warteschlangen bei knappen Ressourcen |
||
* Virtualisierung der Ressourcen (Prozessor: Prozesse, Festplatte: Dateien, Netzwerkkarte: z. B. Sockets, Speicher: virtueller Speicher, Geräte: Spezialdateien) |
* 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 [[Mehrbenutzersystem]]en |
* Überwachung von Zugriffsrechten auf Dateien und Geräte bei [[Mehrbenutzersystem]]en |
||
== Prozesse == |
== Prozesse == |
||
Zur Realisierung eines Betriebssystems wird oft das Konzept des [[Prozess (Informatik)|Prozesses]] (Task) verwendet. Ein Prozess enthält (mindestens) einen Registersatz des Prozessors und kann über den Scheduler angehalten und wieder gestartet werden. Jeder Prozess hat kontrollierten Zugriff auf einen Teil des Speichers sowie Ein- und Ausgabekanäle, die auf Dateien oder Geräte zugreifen. Mit dem Betriebssystem-Kernel kommuniziert er über Systemaufrufe. Ein Programm läuft normalerweise in genau einem, in Ausnahmefällen auch in mehreren Prozessen. Auch manche Systemdienste laufen innerhalb von Prozessen. |
Zur Realisierung eines Betriebssystems wird oft das Konzept des [[Prozess (Informatik)|Prozesses]] (Task) verwendet. Ein Prozess enthält (mindestens) einen [[Registersatz]] des Prozessors und kann über den Scheduler angehalten und wieder gestartet werden. Jeder Prozess hat kontrollierten Zugriff auf einen Teil des Speichers sowie Ein- und Ausgabekanäle, die auf Dateien oder Geräte zugreifen. Mit dem Betriebssystem-Kernel kommuniziert er über Systemaufrufe. Ein Programm läuft normalerweise in genau einem, in Ausnahmefällen auch in mehreren Prozessen. Auch manche Systemdienste laufen innerhalb von Prozessen. |
||
== Starten == |
== Starten == |
||
Beim |
Beim [[Booten]] eines Computers wird nach einem eventuellen [[Power-on self-test|Hardwarecheck]] und einer teilweisen Geräteinitialisierung der Kernel mithilfe eines [[Bootloader]]s in den Speicher geladen und gestartet. Er initialisiert dann die Geräte vollständig und startet den ersten Prozess. Bei einfachen Systemen wie [[MS-DOS]] ist das ein [[Kommandozeileninterpreter]], bei Mehrprozesssystemen ein bestimmter Prozess (bei [[Unix]]oiden <code>init</code>), der die Systemdienste (als Prozesse) lädt und wieder, evtl. nach Eingabe von Namen und Passwort, einen oder mehrere Kommandointerpreter oder eine [[grafische 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. |
||
== Kernel-Arten == |
== Kernel-Arten == |
||
| Zeile 49: | Zeile 50: | ||
* [[Windows NT]] (Kernel) |
* [[Windows NT]] (Kernel) |
||
* [[Linux (Kernel)]] |
* [[Linux (Kernel)]] |
||
* [[User Mode Linux]] |
|||
* [[User_Mode_Linux]] & [[Kernel-based_Virtual_Machine]] - eine virtuelle Kernel-Variante |
|||
* [[Kernel-based Virtual Machine]] |
|||
* [[FreeBSD]] |
|||
* [[Kernel-Modul]] - ein vom Kernel ausführbares Computerprogramm |
|||
* [[Ring_(CPU)]] - Betriebssystem-Architektur mit dem Kernel als innerstem Ring mit höchster Privilegierungsebene |
|||
{{Navigationsleiste Kerneltypen}} |
{{Navigationsleiste Kerneltypen}} |
||
Version vom 7. September 2015, 08:55 Uhr
Ein Kernel (englisch [], übersetzt Kern), auch Betriebssystemkern (oder verkürzt Systemkern), ist der zentrale Bestandteil eines Betriebssystems. In ihm ist die Prozess- und Datenorganisation festgelegt, auf der alle weiteren Softwarebestandteile des Betriebssystems aufbauen. Er bildet die unterste Softwareschicht des Systems und hat direkten Zugriff auf die Hardware. Die Konstruktion eines Betriebssystem-Kernels gehört zum Themenbereich der Informatik und der Softwaretechnik.
Gängige Anforderungen an einen Kernel sind Parallelverarbeitung verschiedener Aufgaben (Multitasking), Einhaltung zeitkritischer Grenzen, Offenheit für unterschiedlichste Anwendungen und Erweiterungen.
Nicht zum Kernel gehörende Teile werden als Userland bezeichnet.
Bestandteile
Ein Kernel ist in Schichten (oder Layer, siehe Schichtenarchitektur) aufgebaut, wobei die unteren (maschinennahen) Schichten die Basis für die darüberliegenden bilden. Die oberen Schichten können Funktionen der unteren Schichten aufrufen, aber nicht umgekehrt.
Folgende Schichten sind vorhanden (von unten nach oben):
- Schnittstelle zur Hardware (Geräte, Speicher, Prozessoren)
- Speicherverwaltung (evtl. einschließlich virtuellem Hauptspeicher)
- Prozessverwaltung (auch Scheduler genannt)
- Geräteverwaltung (auch Device Management genannt)
- Dateisysteme

Wenn alle diese Funktionen im Kernel selbst integriert sind, spricht man von einem monolithischen Kernel. Bei einem Microkernel finden wesentliche Teile in getrennten Prozessen statt. Daneben, bzw. zwischen den beiden liegend, gibt es noch den sogenannten Hybridkernel sowie als Sonderfall den Exokernel, der konzeptionell auf dem Microkernel aufbaut.
Auf jeden Fall laufen außerhalb des Kernels die Anwendungsprogramme, die sich der vom Kernel angebotenen Funktionen bedienen, um mit der Maschine zu kommunizieren.
Aufgaben des Betriebssystem-Kernels
Ein Betriebssystem-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 Festplattenlaufwerke, Netzwerkstack 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 des Prozesses (Task) verwendet. Ein Prozess enthält (mindestens) einen Registersatz des Prozessors und kann über den Scheduler angehalten und wieder gestartet werden. Jeder Prozess hat kontrollierten Zugriff auf einen Teil des Speichers sowie Ein- und Ausgabekanäle, die auf Dateien oder Geräte zugreifen. Mit dem Betriebssystem-Kernel kommuniziert er über Systemaufrufe. Ein Programm läuft normalerweise in genau einem, in Ausnahmefällen auch in mehreren Prozessen. Auch manche Systemdienste laufen innerhalb von Prozessen.
Starten
Beim Booten eines Computers wird nach einem eventuellen Hardwarecheck und einer teilweisen Geräteinitialisierung der Kernel mithilfe eines Bootloaders in den Speicher geladen und gestartet. Er initialisiert dann die Geräte vollständig und startet den ersten Prozess. Bei einfachen Systemen wie MS-DOS ist das ein Kommandozeileninterpreter, bei Mehrprozesssystemen ein bestimmter Prozess (bei Unixoiden init), der die Systemdienste (als Prozesse) lädt und wieder, evtl. nach Eingabe von Namen und Passwort, einen oder mehrere Kommandointerpreter oder eine grafische 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.
Kernel-Arten
Können auf einem Kernel mehrere Prozesse gleichzeitig laufen, spricht man von Multitasking-Kerneln. In Wirklichkeit wird jedoch von der CPU immer nur ein Prozess gleichzeitig behandelt (außer bei Mehrkernsystemen). Den Wechsel regelt in den meisten Fällen der Scheduler. Wird ein Multitasking-Kernel durch eine Zugriffsverwaltung auf Prozesse und Geräte ergänzt, erhält man ein Multiuser-(oder Mehrbenutzer-)System. Darauf können mehrere Benutzer gleichzeitig arbeiten. Jeder Benutzer muss sich einloggen (Authentifizierung). Der Kernel teilt jeden Prozess einem Benutzer zu, ein Benutzer kann 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. Zum einen können dann mehrere Nutzer mit jeweils eigenen Rechten und Präferenzen das System verwenden und zum Anderen besteht die Möglichkeit, dass neben dem Nutzer, der den Rechner direkt benutzt, ein anderer von einem anderen Rechner aus andere Programme ausführt. 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, wodurch sich die Systemsicherheit drastisch erhöht.
Trivia
Bei Commodore hieß der Kernel lange Zeit „Kernal“. Gerüchten zufolge ergab sich das aus einem Schreibfehler in den Handbüchern zu den Commodore-Computern, der dann kurzerhand von Commodore als eigener Begriff für den Kernel erklärt und nachträglich als Backronym umgedeutet wurde: „Keyboard Entry Read, Network, And Link“.