# QNX

QNX ist ein proprietäres POSIX-fähiges unixoides Echtzeitbetriebssystem, das primär auf den Markt eingebetteter Systeme zielt.

## Geschichte

Noch als Studenten der University of Waterloo entschieden sich Gordon Bell und Dan Dodge 1980, ihr eigenes Echtzeitbetriebssystem mit Mikrokernel zu schreiben. Da sie nicht an Anwendersoftware interessiert waren, hielten sie sich vom Desktop-Markt fern. Sie gründeten Quantum Software noch in jenem Jahr und brachten 1982 die erste Version mit der Bezeichnung QUNIX für Intel-8088-CPUs heraus. Kurz darauf wurde das Betriebssystem in QNX umbenannt. Es wird, vor allem im englischen Sprachraum, gelegentlich noch Kjunix ausgesprochen.
Als Erstes wurde QNX um 1985 als Betriebssystem für den Unisys ICON gewählt, den damaligen Standard-Arbeitsplatzrechner an Hochschulen in Ontario. In der Folgezeit breitete sich QNX schnell im Markt eingebetteter Systeme aus und wurde auf verschiedene Plattformen übertragen.
Als sich am Markt Ende der 1990er eine zunehmende Ausrichtung auf POSIX-Modelle abzeichnete, wurde der Kernel neu geschrieben, um ihn von Grund auf SMP- und POSIX-kompatibel zu machen.
QNX Neutrino, das Resultat dieser Anstrengungen, wird seit 2001 von der inzwischen zu QNX Software Systems umbenannten Firma kommerziell angeboten. Diese Version enthält gewöhnlich eine integrierbare graphische Benutzeroberfläche (GUI), genannt Photon microGUI, eine Entwicklungsumgebung basierend auf Eclipse, verschiedene GNU-Werkzeuge, einen Browser (Mozilla bzw. Voyager) und einen HTTP-Server.
Neutrino sollte zeitweilig auch als Basis eines neuen Amiga-Systems Verwendung finden. Diese Pläne wurden von Amiga Inc. jedoch zugunsten eines eigenen Betriebssystem-Ansatzes mit Namen Amiga OS4 (AmigaOne) für PowerPC aufgegeben.
QNX wurde am 27. Oktober 2004 Teil des Konzerns Harman International.
Seit dem 12. September 2007 ist der Quellcode des Kernels öffentlich zugänglich. Der Entwicklungsprozess von QNX wird damit nachvollziehbar. Das neue Lizenzmodell erlaubt zudem die kostenlose Nutzung des Betriebssystems für den nicht-kommerziellen Einsatz. Ebenfalls ermöglicht die neue Lizenz, den Kernel für eigene Zwecke zu verändern; jedoch darf diese Veränderung ohne schriftliche Genehmigung nicht weiter publiziert werden. Dies wird durch das von QNX entworfene Hybrid-Softwaremodell festgeschrieben.
Auch im Automobilbau findet QNX seinen Einsatzbereich. Auf Basis von QNX wurde das BMW iDrive-Navigationssystem CIC programmiert. Ausgestattet sind hiermit die Navigationssysteme sämtlicher Modellreihen ab September 2008. Auch die Navigations- und Infotainmentsysteme vieler Fahrzeuge des VAG-Konzerns (Volkswagen, Audi, SEAT, Škoda) verwenden QNX als Betriebssystem, welches auf speziell auf den Automotive-Bereich zugeschnittenen Nvidia- und Texas-Instruments-Prozessoren läuft.
Am 9. April 2010 kündigte Research In Motion an, QNX von Harman International Industries kaufen zu wollen. Am 28. September 2010 brachte Research In Motion das Blackberry PlayBook auf Basis von QNX auf den Markt, 2013–2016 wurden auch Smartphones mit dem auf QNX basierenden Blackberry 10 angeboten. Integrierte Kompatibilitätsbibliotheken ermöglichten es, Android-Anwendungen mit sehr geringem Aufwand auf QNX anzupassen.

## Beschreibung

Als ein Mikrokernel-Betriebssystem basiert QNX auf der Idee, den Großteil des Systems in Form von Prozessen laufen zu lassen. Dabei läuft jeder Prozess in einem eigenen, durch die MMU des Prozessors geschützten Speicherbereich – egal ob es sich dabei um eine Applikation oder um einen Treiber handelt. Dies erleichtert Entwicklern die Fehlersuche: Versucht Prozess A versehentlich Daten oder Code von Prozess B zu überschreiben, wird der QNX-Microkernel über die MMU darüber informiert und beendet Prozess A, während Prozess B unberührt bleibt. Diese Fähigkeit ist das Hauptunterscheidungsmerkmal im Vergleich mit traditionelleren monolithischen Kerneln, wo das Betriebssystem ein großes Programm mit speziellen Fähigkeiten ist. Im Falle QNX erlaubt der Microkernel dem Nutzer (Entwickler), jegliche von ihm nicht benötigte Funktionalität (z. B. Audio, Grafik oder auch beliebige andere Systemteile) wegzulassen, ohne den Kernel überhaupt anfassen zu müssen.
Ein weiterer Vorteil der Microkernelarchitektur ist die Möglichkeit, selbst essentielle Systemtreiber während des laufenden Betriebes auszutauschen. Bei entsprechend behutsamer Vorgehensweise (Berücksichtigung der Abhängigkeiten) können auf diesem Wege sogar Systemkomponenten ohne Neustart des Gesamtsystems ausgetauscht werden. Im Allgemeinen besteht ein System aus einer sehr großen Zahl von einzelnen Modulen, die jeweils dynamisch geladen werden. Um trotz des Speicherschutzes durch die MMU eine möglichst effiziente Kommunikation zwischen den Prozessen zu ermöglichen, enthält QNX seit der ersten Version umfangreiche Mechanismen zur Prozesskommunikation (IPC). Im Laufe der Entwicklung der verschiedenen Versionen wurden diese Mechanismen stetig erweitert.
Neutrino wurde auf viele weitere Architekturen portiert und läuft heute auf fast jeder modernen CPU, die im Markt eingebetteter Systeme Anwendung findet. Das sind u. a. die x86-Familie, MIPS, PowerPC, SH-4, ARM, StrongARM und xScale.