Zum Inhalt springen

Was ist ein Kernel?

Der Kernel, oder auch Systemkern, sorgt innerhalb eines Computers für den reibungslosen Ablauf des Betriebssystems und ist die Schnittstelle zwischen der Software und der Hardware. Er wird in allen Geräten mit einem Betriebssystem eingesetzt, also beispielsweise Computer, Laptops, Smartphones, Smart Watches etc.

Welche Aufgaben übernimmt der Kernel?

Der Kernel ist hauptsächlich die Schnittstelle zwischen dem Betriebssystem, also der Software, und den Hardwarekomponenten in einem Gerät. Daraus ergeben sich verschiedene Aufgaben, die es zu bewältigen gibt. Für den Endnutzer ist diese Arbeit jedoch nicht sichtbar und kommt nur dadurch zum Ausdruck, ob alle Programme einwandfrei laufen oder nicht.

Wenn wir ein Programm auf einem Computer nutzen, wie beispielsweise Excel, hantieren wir auf dem sogenannten Graphical User Interface (GUI). Jeder Buttonklick oder eine sonstige Aktion wird dann von dem Programm in Maschinencode umgewandelt und an den Kernel des Betriebssystems geschickt. Wenn wir in einer Exceltabelle eine neue Spalte hinzufügen wollen, geht dieser Aufruf an den Systemkern. Dieser wiederum gibt den Aufruf weiter an die Computer Processing Unit (CPU), die dann die Aktion ausführt.

Wenn mehrere Programme gleichzeitig laufen, sorgt der Systemkern außerdem dafür, dass die Anfragen der Programme nacheinander abgearbeitet werden und dem Nutzer das Gefühl vermittelt wird, dass die Prozesse gleichzeitig ablaufen. Wenn also in unserem Beispiel gleichzeitig mit Excel noch ein Browserfenster geöffnet ist, sorgt der Systemkern dafür, dass die Anforderungen der Programme an die CPU und andere Hardware koordiniert abgearbeitet wird.

Hinzu kommen noch weitere, detailliertere Aufgaben, wie beispielsweise:

  • Verwaltung von extern angeschlossenen Geräten, wie Tastaturen, Mäuse oder Monitore, und deren einwandfreie Funktion
  • Lösung von Fehlern bei der Nutzung von Arbeitsspeichern, beispielsweise wenn die Arbeitsspeichernutzung eines Programms zu stark ansteigt.
  • Optimierung der CPU-Nutzung

Aus welchen Schichten besteht der Kernel?

Der Kernel arbeitet in mehreren Schichten, die aufeinander aufbauen. Dazu gehören:

  • Hardware: Die unterste Schicht bildet die Schnittstelle zu der Systemhardware, auf die das Betriebssystem Zugriff hat. Dazu gehören beispielsweise der PCI-Express-Controller oder Speicher.
  • Speicherverwaltung: In der nächsten Schicht werden den laufenden Prozessen dedizierte Mengen des zur Verfügung stehenden Arbeitsspeichers zugewiesen. Des Weiteren kann hier auch virtueller Hauptspeicher verteilt werden.
  • Prozessverwaltung: In dieser Schicht werden die Zeiten der Programme gemanaget und eingehende Anfragen zeitlich so angeordnet, dass sie für uns als Nutzer parallel erscheinen.
  • Geräteverwaltung: In der vorletzten Schicht findet die Geräteverwaltung statt. Im Unterschied zu der Hardwareschicht, handelt es sich hierbei um extern angeschlossene Geräte, wie Monitore oder Drucker, deren Kommunikation über spezielle Treiber sichergestellt ist.
  • Dateisystem: In der obersten Schicht werden Prozesse vorgesehene Bereiche auf der Festplatte, also HDD oder SSD, zugewiesen.

Diese Schichten operieren so, dass jede höhere Schicht auf die darunterliegenden Schichten angewiesen ist und darauf aufbaut. Die Prozessverwaltungsschicht beispielsweise greift auch auf Prozesse in der Hardwareschicht zu. Das Gegenteil ist jedoch nicht der Fall.

Welche Kernel-Arten gibt es?

In der Regel unterscheidet man drei verschiedene Kernel-Arten abhängig davon wie viele Prozesse und Nutzer gleichzeitig verwaltet werden können.

Micro-Kernel

Der Micro-Kernel erfüllt nur die minimalen Aufgaben, wie die Speicherverwaltung und die Verwaltung der CPU-Prozesse. Andere Funktionalitäten, wie beispielsweise das Dateisystem oder die Geräteverwaltung werden an das Betriebssystem selbst ausgelagert. Der Vorteil besteht darin, dass es nicht zu einem Gesamtausfall des Systems kommen kann, wie man ihn beispielsweise bei Windows kennt.

Das Betriebssystem von Apple Computern, MacOS, basiert beispielsweise auf einer Mikrokern-Architektur.

Monolithischer Kernel

Der monolithische Kernel übernimmt zentral alle bereits beschriebenen Aufgaben, ist für alle Speicher- und Prozessverwaltungen zuständig und übernimmt auch die Hardwareverwaltung von extern angeschlossenen Geräten. Das Windows Betriebssystem beruht auf einem monolithischen Kern.

Durch das zentrale Design sind monolithische Kerne meist deutlich schneller als Mikrokerne, jedoch kann es dadurch auch zu Systemabstürzen kommen, wenn ein einzelner Prozess nicht richtig funktioniert.

Hybrid-Kernel

Wie der Name bereits vermuten lässt, ist der Hybrid-Kern die Mischung aus diesen beiden Konzepten. Es handelt sich dabei im Grunde genommen auch um einen großen Kernel, der alle Aufgaben übernimmt, jedoch deutlich kompakter ist und in verschiedene Module aufgesplittet werden kann.

Wie funktioniert der Kernel in einem Jupyter Notebook?

Bei der Arbeit mit Daten und Machine Learning wird oft auf Jupyter Notebook zurückgegriffen. Es handelt sich um eine web-basierte Plattform für die Erstellung und das Teilen von Programmiercode. Es wird deshalb so oft für Data Science Anwendungen genutzt, da einzelne Codeblöcke ausgeführt werden können und deren Ergebnisse, zum Beispiel Graphen, direkt sichtbar sind. Das ist vor allem bei der Modellerstellung oder der Analyse von Datensätzen vorteilhaft, wenn die nächsten Programmierschritte von den vorherigen Ergebnissen abhängen.

Bei der Nutzung von Jupyter Notebook wird auch ein Kernel gestartet, der mitunter zu Problemen führen kann, wie beispielsweise im folgenden Beispiel beim Verbindungsaufbau. Jedoch unterscheidet sich dieser komplett von dem eines Betriebssystems wie er in diesem Beitrag bisher beschrieben wurde.

Problem beim Jupyter Notebook Kernel
Jupyter Notebook Problem | Quelle: Autor

Der Jupyter Notebook Kernel ist eine Engine, die den Notebook Code zur Ausführung bringt und speziliasiert ist auf eine bestimmte Programmiersprache, wie beispielsweise Python. Er nimmt aber nicht die umfassenden Schnittstellenfunktionen war, die bisher beschrieben wurden.

Die folgenden Befehle sind im Umgang mit dem Jupyter Notebook besonders hilfreich:

  • Interrupt: Dieser Befehl stoppt die Prozesse, die gerade in einer Zelle ablaufen. Dadurch kann zum Beispiel das Training eines Modells gestoppt werden, auch wenn noch nicht alle Trainingsepochen erreicht wurden.
  • Restart & Run All: Mit diesem Befehl können alle Zellen nochmal neu ausgeführt werden und die bisherigen Variablen wurden gelöscht. Das kann dann sinnvoll sein, wenn man einen neueren Datensatz in das bestehende Programm einlesen will.
  • Restart: Der alleinige Befehl “Restart” führt zu demselben Ergebnis, jedoch werden nicht nochmal alle Zellen zur Ausführung gebracht.
  • Reconnect: Beim Training von großen Modell kann der Kernel “sterben”, weil der Arbeitsspeicher vollläuft. Dann ist ein Reconnect sinnvoll.
  • Shutdown: Solange ein Kernel noch läuft, bindet er auch Arbeitsspeicher. Wenn man also parallel andere Programme laufen lässt, für die man Arbeitsspeicher freigeben will, kann der “Shutdown” Befehl Sinn machen.

Welche anderen Beispiele von Kernels gibt es?

Es gibt mehrere Beispiele für beliebte Kernel, die in modernen Betriebssystemen verwendet werden. Einige der bekanntesten sind:

  • Linux: Der Linux-Kernel ist ein monolithischer Open-Source-Kernel, der im Linux-Betriebssystem verwendet wird. Er wurde 1991 von Linus Torvalds entwickelt und hat sich seitdem zu einem der weltweit am häufigsten verwendeten Kernel entwickelt. Er ist für seine Stabilität, Sicherheit und Leistung bekannt und wird in einer Vielzahl von Geräten und Systemen eingesetzt, darunter Desktops, Server und eingebettete Geräte.
  • Windows NT: Der Windows NT-Kernel ist ein Hybrid-Kern, der in modernen Versionen des Windows-Betriebssystems verwendet wird. Er wurde erstmals 1993 veröffentlicht und hat seitdem mehrere Überarbeitungen und Aktualisierungen erfahren. Der Windows NT-Kernel wurde entwickelt, um ein hohes Maß an Sicherheit und Stabilität zu bieten und gleichzeitig eine breite Palette von Hardware und Software zu unterstützen.
  • macOS: Der macOS-Kernel ist ein Hybrid-Kern, der in Apples Betriebssystem macOS verwendet wird. Er basiert auf dem Mach-Kern und wurde erstmals im Jahr 2001 eingeführt. Er ist für seine Leistung, Stabilität und Sicherheit bekannt und wird in einer Vielzahl von Apple-Geräten eingesetzt, darunter Desktops, Laptops und mobile Geräte.
  • FreeBSD: Der FreeBSD-Kernel ist ein Monolith, der im FreeBSD-Betriebssystem verwendet wird. Er wurde erstmals 1993 veröffentlicht und ist für seine Leistung, Sicherheit und Skalierbarkeit bekannt. Er wird in einer Vielzahl von Geräten und Systemen eingesetzt, darunter Server, Router und eingebettete Geräte.
  • Android: Der Android-Kernel ist eine modifizierte Version des Linux-Kerns, der im Android-Betriebssystem verwendet wird. Er wurde erstmals 2008 eingeführt und ist darauf ausgelegt, ein hohes Maß an Leistung und Flexibilität für mobile Geräte zu bieten. Außerdem wird er in einer Vielzahl von Smartphones und Tablets sowie in anderen Geräten wie Smart-TVs und Smartwatches verwendet.

Diese Beispiele zeigen die Vielfalt der verschiedenen Typen und ihre Anwendung in verschiedenen Betriebssystemen und Geräten. Auch wenn sie einige gemeinsame Merkmale aufweisen, ist jeder Kernel auf die spezifischen Bedürfnisse und Herausforderungen in seiner jeweiligen Umgebung zugeschnitten.

Wie entwickelt man einen Kernel?

Die Entwicklung eines Computerkerns ist ein komplexer und anspruchsvoller Prozess, der fortgeschrittene Kenntnisse über Computersysteme, Programmiersprachen und Softwareentwicklungsmethoden erfordert. Im Folgenden sind einige allgemeine Schritte aufgeführt, die typischerweise bei der Kernel-Entwicklung durchgeführt werden:

  • Definieren der Anforderungen: Der erste Schritt bei der Entwicklung besteht darin, die Anforderungen an den Kernel zu definieren, einschließlich der Zielhardware, der Systemarchitektur und der Leistungsziele. Dies hilft bei der Bestimmung der Art des zu entwickelnden Systems und der Funktionen, die er unterstützen muss.
  • Entwurf der Architektur: Der nächste Schritt ist der Entwurf der Architektur, einschließlich der Speicherverwaltung, der Prozessverwaltung, der Gerätetreiber und anderer Komponenten, die für die Verwaltung der Systemressourcen und die Bereitstellung einer sicheren und stabilen Umgebung für die Ausführung von Anwendungen erforderlich sind.
  • Schreiben des Codes: Sobald die Architektur definiert ist, kann der Code mit Programmiersprachen wie C oder Assembler geschrieben werden. Dies erfordert ein tiefgreifendes Verständnis der Hardware- und Softwarekomponenten des Systems sowie Kenntnisse in der Low-Level-Programmierung und der Softwareentwicklung auf Systemebene.
  • Teste den Kern: Das Testen ist ein wichtiger Teil der Entwicklung, um sicherzustellen, dass der Kernel stabil und sicher ist und die Leistungsziele erfüllt. Beim Testen wird der Kernel auf verschiedenen Hardwarekonfigurationen und in verschiedenen Umgebungen ausgeführt, um Bugs, Fehler und Leistungsprobleme zu erkennen und zu beheben.
  • Optimieren: Sobald der Kernel stabil und funktionsfähig ist, kann er optimiert werden, um die Leistung zu verbessern und den Ressourcenverbrauch zu verringern. Dies beinhaltet eine Feinabstimmung des Codes und der Architektur, um eine optimale Systemleistung zu erreichen und gleichzeitig die Stabilität und Sicherheit zu gewährleisten.
  • Dokumentation: Die Dokumentation ist ein wesentlicher Bestandteil der Entwicklung, um Richtlinien und Anweisungen für die Verwendung und Wartung des Kernels bereitzustellen. Dazu gehört die Dokumentation der Architektur, der Systemanforderungen, der Installations- und Konfigurationsverfahren und der Tipps zur Fehlerbehebung.

Insgesamt ist die Entwicklung eines Computer-Kernels ein anspruchsvoller und zeitaufwändiger Prozess, der spezielle Kenntnisse, Fähigkeiten und Ressourcen erfordert. Er wird in der Regel von erfahrenen Softwareentwicklern durchgeführt und erfordert eine sorgfältige Planung, Gestaltung, Prüfung und Optimierung, um einen stabilen, sicheren und leistungsstarken Kernel zu erstellen, der den Anforderungen des Zielsystems gerecht wird.

Das solltest Du mitnehmen

  • Ein Kernel sorgt innerhalb eines Computers für den reibungslosen Ablauf des Betriebssystems und ist die Schnittstelle zwischen der Software und der Hardware.
  • Er ist in verschiedene Schichten unterteilt, welche aufeinander aufbauen.
  • Zu den Aufgaben zählen die Verwaltung von parallel laufenden Prozessen oder die einwandfreie Funktion von extern angeschlossenen Geräten.
  • Der Jupyter Notebook Kernel ist kein Systemkern im beschriebenen Sinne, da er lediglich dafür genutzt wird Programmiercode auszuführen.
Quantum Computing / Quantencomputing

Was ist Quantencomputing?

Tauchen Sie ein in das Quantencomputing. Entdecken Sie die Zukunft des Rechnens und sein transformatives Potenzial.

Anomaly Detection / Anomalieerkennung

Was ist die Anomalieerkennung?

Entdecken Sie effektive Techniken zur Anomalieerkennung. Erkennen Sie Ausreißer und ungewöhnliche Muster, um bessere Einblicke zu erhalten.

t5 Model / t5 Modell

Was ist das T5-Model?

Entdecken Sie die Leistungsfähigkeit des T5-Modells für NLP-Aufgaben - lernen Sie die Implementierung in Python und Architektur kennen.

Computer Vision

Was ist Computer Vision?

Einführung in die Computer Vision und ihre Anwendungen.

MLOps

Was ist MLOps?

Entdecken Sie MLOps und erfahren Sie, wie es den Einsatz von maschinellem Lernen revolutioniert. Erkunden Sie die wichtigsten Konzepte.

Jupyter Notebook

Was ist ein Jupyter Notebook?

Lernen Sie, wie Sie Ihre Produktivität mit Jupyter Notebooks steigern können! Entdecken Sie Tipps und Best Practices für Data Science.

Andere Beiträge zum Thema Kernel

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Niklas Lang

Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.

Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.

Cookie Consent mit Real Cookie Banner