- QNX ist ein mikrokernelbasiertes Echtzeitbetriebssystem, das Anfang der 1980er Jahre in Kanada entstand
- Es bot Unterstützung für verschiedene Hardware wie den IBM PC, hohe Portabilität, verteilte Nachrichtenübermittlung sowie herausragende Zuverlässigkeit und eine Multitasking-Umgebung
- Es wurde in Bildungscomputern, industrieller Infrastruktur und Fahrzeugsystemen eingesetzt und hatte großen Einfluss
- Durch POSIX-Konformität wurde die Kompatibilität mit Unix gestärkt; zudem entwickelte es sich mit einer leichtgewichtigen GUI (Photon) und vielfältigen Netzwerkfunktionen weiter
- Es reagierte auch auf aktuelle Marktveränderungen in Bereichen wie Automobil, Embedded und Mobile und verbesserte kontinuierlich Stabilität, Leistung und Sicherheit
Die Anfänge des QNX-Betriebssystems
- 1979 sammelten Gordon Bell und Dan Dodge von der University of Waterloo durch das Echtzeitbetriebssystem-Projekt Thoth Erfahrungen
- Thoth zeichnete sich durch hohe Portabilität, synchrones Message Passing aus und funktionierte unabhängig von der Hardware
- Nach ihrem Abschluss gründeten Bell und Dodge Quantum Software Systems (später QNX Software Systems) und begannen auf einem Prototyp-Mikrocomputer (auf 6809-Basis) mit der Entwicklung eines eigenen OS
QUNIX — der Vorläufer von QNX
- Die erste Version, QUNIX 0.1, basierte auf einem Mikrokernel, war eine Mischung aus CP/M- und UNIX-Elementen und wurde als erstes mikrokernelbasiertes Echtzeit-OS für den IBM PC entwickelt
- Anders als traditionelles Unix führte es eine eigene Verzeichnisstruktur wie /cmds, /config, /sys sowie ein eigenes Befehlssystem mit Kommandos wie
help ein
- Es gab frühe Einschränkungen wie Festplattenunterstützung (5-MB-HDD in QUNIX 0.4) und floppybasiertes Booten
Umstellung auf QNX und Wachstum
- Aufgrund eines Markenproblems mit AT&T wurde der Name 1982 von QUNIX zu QNX geändert, 1983 folgte die offizielle Veröffentlichung von QNX 1.0
- Kernel: etwa 10.000 Zeilen C-Code, mit Mikrokernel-Eigenschaften wie Scheduling, Message Passing und Prioritätsverarbeitung
- Die meisten Dienste (Dateisystem, Treiber, Netzwerk usw.) nutzten eine nachrichtenbasierte Kommunikationsstruktur
- Unterstützung für eine netzwerktransparente Message Queue, bis zu 250 gleichzeitige Tasks und Mehrbenutzerbetrieb
- Einschließlich C-Compiler, Editor und Networking-Unterstützung wurde es für 650 US-Dollar verkauft (Stand 1983)
- QNX 1.2 (1984): Pattern Matching, stärkeres Shell-Programming, Unterstützung für IBM AT, Preissenkung usw.
Einstieg in den Bildungsbereich: Burroughs ICON
- Es wurde für das Standardcomputerprojekt des Bildungsministeriums von Ontario ausgewählt, woraufhin der ICON-Computer (80186, 512K RAM, mit QNX) entwickelt wurde
- Netzwerkbasiertes Booten über File-Server (ARCNET), keine individuellen Speichergeräte, Benutzer arbeiteten mit serverbasierten Home-Verzeichnissen
- Erfahrungen mit dem Aufbau eines fortschrittlichen Systems durch hypertextbasiertes „lessonware“, verschiedene Bildungssoftware, Networking-, Audiofunktionen und Erweiterbarkeit
Expansion in Industrie und kommerzielle Märkte
- In der zweiten Hälfte der 1980er Jahre wurden Marktanforderungen wie Unterstützung für IBM PS/2, LAN, GUI und DOS-Emulation (QDOS, RUNDOS) berücksichtigt
- 1987 QNX 2: Upgrades wie Protected Mode auf IBM AT, BSD-Networking, 1-TB-Dateien, 32 serielle Ports, einfache GUI (House)
- Organisatorisches Wachstum mit Büroerweiterung, Umzug in ein neues Gebäude usw.
Einführung von POSIX und Photon GUI
- 1991 QNX 4.0: POSIX-Konformität, Verkleinerung des Kernels (7K, 605 LOC), IPC, Networking und verbesserte Performance
- 1994 Veröffentlichung von QNX Photon microGUI: leichtgewichtige GUI auf Mikrokernelbasis, Netzwerktransparenz, Unterstützung für verschiedene Geräte
- Photon ließ sich von ressourcenbeschränkten Umgebungen bis zu funktionsreichen GUIs skalieren und bot zudem eine X-Window-kompatible API
- Die komplette Demo-Umgebung (Networking, Webbrowser, Dateiverwaltung usw.) war so leichtgewichtig, dass sie auf einer einzelnen 1,44-MB-Diskette lief
Embedded- und verteilte Systeme, Evolution zu Neutrino
- Bis QNX 4.25 (1997) zahlreiche Verbesserungen; führendes Echtzeit-OS in Großunternehmen und industriellen Einsatzfeldern (Kraftwerke, Medizin, Verkehr, Raumfahrt usw.)
- 1996 QNX Neutrino 1.0: SMP, erweiterte POSIX-Unterstützung, breite CPU-Unterstützung, Einführung von GNU/GCC, verbesserte Prozess-/Thread-Verwaltung
- Speicherverwaltung und Prozessisolierung wurden strenger umgesetzt, durch Übernahme des NetBSD-Networking-Codes stieg die Allgemeintauglichkeit
Partnerschaften und Markteintritt
- 1998 wurde eine Partnerschaft mit Amiga vorangetrieben (letztlich entschied sich Amiga für Linux)
- 1999 Neutrino 2.0/2.1: UPM (Schutzmechanismus auf Kernel-Ebene), Unterstützung mehrerer Architekturen wie PowerPC/MIPS/ARM, diversifizierte Entwicklungsumgebungen
- 1999 Zusammenarbeit mit Motorola, Einstieg in automobile Infotainment-Systeme (Navigation, Audio usw.)
Die 2000er: bis zu Multimedia, Automobil und Mobile
- 2001 QNX 6.0: Multimedia-Streaming, Web Package Manager, integrierte Entwicklungsumgebungen für verschiedene CPUs/Architekturen
- Modernisierung mit der Eclipse-basierten Momentics Tool Suite (2002), Netzwerk-Clustering, IPv6 usw.
- Nach der Übernahme durch Harman International 2004 Fokus auf Embedded- und Automobilmarkt, Einführung der QNX-CAR-Plattform, Übernahme durch große Fahrzeughersteller
- Breite Kommerzialisierung: bis 2010 in 17 Millionen Fahrzeugen und mehr als 200 Modellen verbaut
Übernahme durch BlackBerry und Weiterentwicklung bei Mobile/Sicherheit
- 2010 übernahm Research in Motion (BlackBerry) QNX und erweiterte es zum Betriebssystem für BlackBerry PlayBook und BB10 (=BBX)
- QNX Safety Kernel (ISO/IEC-zertifiziert, missionskritische Sicherheit), Ausweitung im Markt für zertifizierte Embedded-Systeme
- Laufende Weiterentwicklung bei Photon, Netzwerk, Multimedia, UI/UX usw.
- BBX (2013): gestenorientierte UI, Multitasking, verschiedene App-Frameworks, ausgestattet mit leistungsstarker Hardware
- Wegen begrenztem App-Ökosystem und Wegfall der Tastatur scheiterte es im Wettbewerb, die Lebensdauer wurde jedoch bis 2022 verlängert
Fazit
- QNX zeichnete sich durch Echtzeitfähigkeit, atomare Kernel-Architektur, netzwerktransparentes Multiprocessing, Skalierbarkeit und Sicherheit aus
- Es etablierte einen eigenständigen Bereich in der Unix-Kompatibilität sowie in Industrie-, Automobil- und Embedded-Anwendungen
- Im Wettbewerb um Open Source und den Einstieg in populäre mobile Umgebungen scheiterte es, behält jedoch in missionskritischen Bereichen seinen Ruf als De-facto-Industriestandard
1 Kommentare
Hacker-News-Kommentare
Ich habe einige schöne Erinnerungen im Zusammenhang mit diesem OS. In der Grundschule standen bei uns im Klassenraum ICON-Computer, und ich erinnere mich, wie meine Freunde und ich darum wetteiferten, den Trackball so schnell wie möglich zu drehen. Als ich bei BlackBerry arbeitete, entwickelte ich eine Funktion, mit der sich ein QNX-BlackBerry als Bluetooth-HID-Gerät verwenden ließ. Damit konnte man mit Trackpad und physischer Tastatur aus der Ferne auch einen Laptop steuern, was bei Präsentationen wirklich nützlich war. Dann ordnete allerdings irgendein PM an, diese Funktion auf das PlayBook zu beschränken, wodurch sie praktisch nutzlos wurde. Ich erinnere mich noch sehr deutlich daran, wie Dan Dodge argumentierte, dass man bei einem Standard keine Einschränkungen vornehmen dürfe. Seitdem habe ich großen Respekt vor Dan Dodge, und mit diesem PM möchte ich nie wieder zusammenarbeiten
Erstaunlich, dass der ICON-Computer auf diesem OS basierte. Er war damals den üblichen PCs deutlich voraus. Eine Ausnahme war allerdings die Funktion, mit der ICONs miteinander kommunizieren konnten, denn damit ließ sich leicht ein anderes System oder gleich das ganze Netzwerk lahmlegen
QNX wurde am Ende zu BlackBerry 10. Es ist das beste mobile OS, das ich je benutzt habe. Schade nur, dass es so wenige genutzt haben
Ich habe die HID-Funktion verwendet, an der du gearbeitet hast, und sie hat mir wirklich gefallen
KDE Connect bietet praktisch dieselbe Funktionalität, nur besser. Wirklich großartig
Ich wünschte, man könnte das ICON-Erlebnis mit einem Emulator bewahren. Heutzutage müsste man vermutlich sogar das komplette ICON-Netzwerk im Browser emulieren können
Ich mochte die minimalistische Ästhetik von QNX Photon sehr. Ich hatte lange eine komplexe FVWM-Konfiguration, um das Photon-Gefühl so gut wie möglich nachzubilden. Zur Referenz: ein Screenshot meines Gentoo-Desktops aus dem Jahr 2004 Desktop-Screenshot
Ich habe deine Konfiguration übernommen und benutze sie seit über 15 Jahren
Sieht selbst heute noch gut aus. Ich frage mich, ob du die dotfiles noch hast
Meinem WindowMaker-Theme haushoch überlegen. Dein FVWM-Theme ist wirklich großartig
Ist das im Screenshot nicht ein Winamp-Klon?
Mir gefiel die Idee von QNX so gut, dass ich riesige Erwartungen hatte. Damals war unser Team gerade dabei, einen optischen Lebensmittelprozessor von einem DSP auf allgemeine Hardware (FireWire, 1394) zu portieren. Die Prozessisolierung von QNX war großartig, aber mit dem Overhead der nachrichtenbasierten Datenübertragung war ich nicht besonders zufrieden. Am Ende ließen wir für 2.000 Dollar den 1394-Treiber unter Linux um isochronous mode/DMA erweitern und nutzten ihn zusammen mit RT-Erweiterungen. Die Lehre daraus war das „Gesetz der Erhaltung der Hässlichkeit“. In Softwaresystemen bleibt immer irgendwo eine unschöne Stelle zurück, die sich nie wirklich elegant lösen lässt; verbessert man eine Seite, wandert diese „Hässlichkeit“ einfach an eine andere Stelle
Ich denke, das „Gesetz der Erhaltung der Hässlichkeit“ ist im Kern dem „Wasserbett-Prinzip“ sehr ähnlich. In Systemen mit einer gewissen Komplexität gilt: Drückt man ein Problem an einer Stelle nieder, taucht es an einer anderen wieder auf. Wer mehr über das Wasserbett-Prinzip wissen möchte, kann hier nachlesen
Ich habe eine Idee, wie man Message Passing unter QNX beschleunigen könnte. Man verschickt Nachrichten über den Paging-Mechanismus, also ohne Datenkopien und nur mit aktualisierten Seitentabellen. Natürlich bleibt im Vergleich zu einem macro kernel noch immer der Overhead durch double TSS load, aber es ist dennoch schnell. Trotzdem hat Eleganz ihren Preis. Wenn man auch Latenz, Zuverlässigkeit, Stabilität und Korrektheit berücksichtigt, wiegen solche Faktoren am Ende deutlich schwerer als bloße Verarbeitungsgeschwindigkeit
Heute wird DSMP (Direct System Memory Protection) vollständig unterstützt, und die Systemleistung ist viel höher, sodass der Overhead des Message Passing meiner Meinung nach kein so großes Problem mehr ist. Die anderen Vorteile überwiegen eher
Ich frage mich, ob „optical food processor“ metaphorisch gemeint ist oder wirklich ein Gerät bezeichnet, das mit Bildern Lebensmittel schneidet
Das Foto des ICON in diesem Blog ist tatsächlich mein ICON und wurde aus meinem Blog übernommen (danke für die Quellenangabe). Ich teile hier meinen Beitrag über den ICON-Computer unter QNX. Im ersten Beitrag gibt es auch einen YouTube-Link zu einem QNX-Demovideo
ICON-Beitrag
LEXICON-Beitrag
Um 2002 herum habe ich mich per telnet auf mein Kabelmodem verbunden und war völlig verblüfft, als ich entdeckte, dass darauf QNX lief
Um 1996 herum bekam ich QNX, mit RTOS-GUI und Netzwerk-Stack auf nur einer Diskette, und war von dieser geringen Größe beeindruckt. Für eine Slackware-Installation brauchte man schon mehrere Disks, deshalb wirkte QNX kaum glaubhaft
Daran erinnere ich mich auch. In dieser kleinen Demo war sogar ein Webbrowser enthalten. Wer es selbst ausprobieren möchte, kann das hier tun
Solche Demo-Versionen dienten in Wahrheit genau dazu, die Fähigkeiten zu demonstrieren. Damals war QNX auf dem LiveCD-Markt so beeindruckend, dass viele nur noch davon schwärmten. Zur gleichen Zeit gab es übrigens auch Linux, das von Diskette bootete und X11 samt Webbrowser enthielt; auch das war wirklich bemerkenswert HN-Kommentarlink
Ich erinnere mich noch, wie ich um 2000 gerade anfing, mit Linux-Desktops zu experimentieren, und dann die QNX-Demo herunterlud und völlig überrascht war
Mit QNX 4 haben wir an der Universität ein Robotersystem gebaut. Mit vernetzten 486-/Pentium-CPU-Karten gelang uns ein vollständig hart echtzeitfähiger Roboteraufbau. Beeindruckend war, dass die grundlegenden Systemaufrufe von QNX (
send/receive/reply) im Header fast als nur drei Zeilen Inline-Assembler implementiert waren. Auf Basis dieser Erfahrung habe ich im Bereich Robotik auf vxWorks, SunOS, Linux und anderen Systemen ähnliche Funktionen selbst implementiert und dabei viel gelerntArbeit zum Robotersystem
Wer QNX auf einem Raspberry Pi ausprobieren möchte, für den ist dieser Beitrag vielleicht nützlich Anleitung zur QNX-Installation auf dem Raspberry Pi
Hier gibt es auch ein kostenloses Image von QNX 8.0. Man kann es direkt auf einen Pi 4 flashen und auch für Pi 400 und CM4 anpassen
Kostenloses QNX-8.0-Image und Hinweise
Wer es in einer virtuellen Maschine verwenden möchte, kann ältere Images von archive.org herunterladen
Ältere QNX-Images
Ich habe mit QNX einen Audio-Server gebaut und sogar MP3-Encoding und -Wiedergabe dorthin portiert. Als wir die Firmenzentrale direkt besuchten, wies Dan Dodge seine Teammitglieder an, uns mit aller Kraft zu unterstützen. Dadurch konnten wir unser Startup stabil aufbauen, und bis zum Umstieg auf Linux sechs Jahre später war das eine enorme Hilfe
Bei Quantum hieß es zwar, man respektiere Unix, zugleich bewarb man QNX aber als ein in den 1980ern entworfenes System, das zum OS der 1990er werden sollte. GNU, das Internet, Microsoft Windows, Drittentwickler, die Einstiegshürde für Windows-basierte Apps, das Web, Shareware, BBS, VARs, die Bewegung für freie Software und vieles mehr hatte man damals nicht im Blick. Der OS-Markt folgt einem Winner-takes-all-Muster, und eine Preisstrategie von mehreren hundert Dollar war ein schwerer Fehler. Für jene Zeit war das vielleicht unvermeidlich, aber das Problembewusstsein war eindeutig da. Auch die Bedeutung einer GUI erkannte man erst spät; Photon GUI erschien erst mit QNX 4.1 im Jahr 1994