Microkernel: Für Embedded Systeme die bessere Wahl

Microkernel des BlackBerry OS10 ist die bessere Wahl

In der Vergangenheit versuchten Unternehmen immer wieder ein Betriebssystem vom PC auf ein mobiles Gerät zu bringen. Microsoft, HP, Dell und auch andere Hersteller scheiterten immer wieder an dieser Lösung. Unabhängig davon, ob es sich um ein Windows oder Linux System handelte.

Schon im Jahre 1995 veröffentlichte das US-amerikanische Unternehmen Palm ein reines mobiles Betriebssystem für eines der ersten Smartphones. Leider war Palm seiner Zeit voraus und die Benutzeroberfläche war alles andere als smart. Im Laufe der Geschichte versuchten sich viele Hersteller an “richtigen” Smartphones, unteranderem BlackBerry. Ein Hersteller, welcher durch das Wort „Smartphone“ erst recht seinen Namen bekam.

Im Jahr 2007 kam das iPhone von Apple auf den Markt. Manche mögen behaupten, dass es keine Revolution war. Jedoch war es eine.
Wieso ?
Durch starke Anpassungen in der grafischen Darstellung. Endlich entfernte man die ganzen Knöpfe und schalter, das Userinterface wurde vereinfacht und man konnte es komplett mit den Fingern bedienen.
Später folgte Andy Rubin´s Android, welches jetzt zu Google gehört, und noch ein paar weitere Systeme, wie Windows Phone oder MeeGO.

Obwohl all diese Hersteller das Betriebssystem für die mobile Nutzung angepasst haben, haben sie alle eines gemeinsam:
Keiner von ihnen hat extra einen Kernel für das „Smartphone“ entwickelt.
Apple übernahm den Mac OSX Kernel XNU für das iPhone, Android und MeeGO den Linux Kernel, WindowsPhone 7 den Windows-CE Kernel und WindowsPhone 8 den Windows-NT Kernel.

Im Januar 2013 stellte BlackBerry zwei neue Geräte vor:
Das Z10 und das Q10.
Das besondere an diesen Geräten ist nicht, dass sie ein komplett neues hauseignes Betriebssystem namens BlackBerry OS10 mit sich bringen, sondern vielmehr, dass BlackBerry nun einen eigenen Microkernel im BlackBerry OS10 im Einsatz hat.
Fairerweise muss man dazu sagen, dass auch BlackBerry keinen eigenen Kernel für deren Smartphones hat, sondern sie benutzen den QNX Microkernel.

QNX, welches 2010 von BlackBerry übernommen wurde, ist spezialisiert auf Embedded Systeme. Dies passt sehr gut, denn auch ein Smartphone ist ein Embedded System, sprich ein in sich geschlossenes System.

Was ist ein Kernel?

Ein Kernel (…), 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 System-Kernel sind Parallelverarbeitung verschiedener Aufgaben (Multitasking), Einhaltung zeitkritischer Grenzen, Offenheit für unterschiedlichste Anwendungen und Erweiterungen.
Quelle

Bedeutung:
Ein Kernel kommuniziert mit der Hardware, z.B. mit dem Prozessor (CPU) und dem Arbeitsspeicher (RAM), verwaltet all dies und gibt diese Information an das Betriebssystem (OS) weiter.
Das OS wiederum verarbeitet alles und bereitet es ggf. grafisch auf. Die Treiber der Gerätehardware, zur Kommunikation der Hardware mit dem OS, sind auch im Kernel vorhanden.
Ein Kernel kann auch noch einiges mehr enthalten, wie z.B ein Dateisystem. Also hat ein Kernel sehr viele Aufgaben und dementsprechend groß ist der Code.

Was ist ein Microkernel?

Ein Microkernel bzw. Mikrokern bezeichnet einen Betriebssystemkern. Der Microkernel verfügt im Gegensatz zu einem monolithischen Kernel nur über grundlegende Funktionen – in der Regel lediglich Funktionen zur Speicher- und Prozessverwaltung, sowie Grundfunktionen zur Synchronisation und Kommunikation. Alle weiteren Funktionen werden als eigene Prozesse (Server), die mit den nachfragenden Programmen (Client) kommunizieren, oder als Programmbibliothek, welche von den nachfragenden Programmen eingebunden wird, im Benutzer-Modus implementiert.
Quelle

Bedeutung:
Im Gegensatz zu einem herkömmlichen Kernel übernimmt der Microkernel nur die minimalen Anforderungen, sprich die wichtigsten. Wie Speicherplatzverwaltung im RAM oder der Prozessverwaltung in der CPU. Den Rest, wie das Dateisystem oder Treiber, kann auch das Betriebssystem übernehmen.

Vergleich Microkernel zu normalen Kernel

Vergleich Kernel Microkernel

Wieso ist ein Microkernel sicherer/zuverlässiger als ein „normaler“ herkömmlicher Kernel?

Der herkömmlichen Kernel
Szenario:
Dateisystem fällt aus (einige Windows Nutzer kennen es vielleicht).

Das gesamte System stürzt ab und man bekommt in manchen Fällen den Blue Screen of Death (BSOD) zu sehen. Hier ein Beispiel eines nicht mehr kommunikationsfähigen Treibers:
NDIS_BSOD
Während bei einem standardmäßigen Kernel das System total aufgibt, funktioniert bei einem Microkernel noch alles.
Zwar ist das Dateisystem kritisch und ggf. können einige Anwendungen daraufhin nicht mehr ausgeführt werden, dennoch bleibt das System stabil und läuft weiter.

Wie Airbags in Autos sind solche Systeme mit einem Microkernel von essentieller Bedeutung. Daher finden sie auch immer mehr Verwendung. Vor allem in kritischen Systemen. Im Falle von QNX z.B. in Fahrzeugen, medizinischen Geräten, Flugüberwachung, Verkehrsüberwachung, Schiffsnavigationsgeräte usw.

Wieso ist ein Microkernel bzw. der QNX Kernel so viel sicherer als ein Windows, Apple oder Linux Kernel? 

Um das zu verstehen, müssen ein paar Schritte zurück gemacht werden.

Herkömmliche Kernels werden zuerst mit den Gedanken an Funktionalität und Zuverlässigkeit entwickelt.
Sicherheit, oder Datenintegrität, kommt erst als nächster Schritt oder im schlimmstenfalls am Ende der Entwicklung.

QNX ist hier einen anderen Weg gegangen und hat das Thema Sicherheit schon im Konzept des Kernels aufgegriffen.

Ein herkömmlicher Kernel wie z.B. der Linux Kernel hat ca.
14 Millionen Codezeilen.
QNX Kernel nur 97.000 Codezeilen.
Der QNX Neutrino Kernel so stabil und sicher wie es nur geht. Man hat die Codezeilen so gering wie möglich gehalten.

qnx_microkernel_wheel

Nehmen wir das Beispiel des Airbags wieder auf. Es braucht nur eine Codezeile um den Airbag auszulösen. Also muss vorher alles überprüft worden sein.
Je weniger Codezeilen desto weniger Fehlerquellen und höhere Effizienz, also sparsamer beim Ressourcenverbrauch, Rechenzeit und Speicherbedarf.

Der QNX Neutrino Kernel ist zudem ein Realtime OS Microkernel.
Der Kernel und das dazugehörige Betriebssystem müssen manche Funktionen in Echtzeit abarbeiten. In einem Worst-Case-Szenario bedeutet dies, dass Kernfunktionen in einem vorher festgelegten Zeitrahmen bearbeitet werden müssen.
Beispiel Airbag: Bei einem Unfall und einem daraus zu erwartenden System- und oder Energieausfall, wird die Funktion durch Vorausberechnung und garantierter Bearbeitungszeit sichergestellt.

Nehmen wir alle Punkte zusammen ist es ein Zitat von BlackBerry CEO John Chen folgerichtig:

BlackBerry hat die Sicherheit in der DNA
und baut keine Festung auf ein unsicheres Fundament.

Diskussionsthread im Forum.

bb10qnx