- QNX est un système d’exploitation temps réel à microkernel né au début des années 1980 au Canada
- Il offre une prise en charge de matériels variés, dont l’IBM PC, une grande portabilité, une messagerie distribuée et une excellente fiabilité dans un environnement multitâche
- Il a eu une influence majeure grâce à son adoption dans les ordinateurs éducatifs, les infrastructures industrielles et les systèmes automobiles
- Sa conformité POSIX a renforcé sa compatibilité avec Unix, et il a évolué avec une GUI légère (Photon) ainsi que diverses fonctions réseau
- Il a continué à améliorer sa stabilité, ses performances et sa sécurité tout en s’adaptant aux évolutions récentes des marchés de l’automobile, de l’embarqué et du mobile
Les débuts du système d’exploitation QNX
- En 1979, Gordon Bell et Dan Dodge de l’University of Waterloo acquièrent de l’expérience grâce à un projet de système d’exploitation temps réel appelé Thoth
- Thoth se distinguait par sa grande portabilité, sa messagerie synchrone et son fonctionnement indépendant du matériel
- Après leurs études, Bell et Dodge fondent Quantum Software Systems (qui deviendra plus tard QNX Software Systems) et commencent à développer leur propre OS sur un prototype de micro-ordinateur basé sur le 6809
QUNIX — le prédécesseur de QNX
- La première version, QUNIX 0.1, reposait sur un microkernel, mélangeait des éléments de CP/M et d’UNIX, et fut développée comme le premier OS temps réel à microkernel pour IBM PC
- Contrairement à Unix traditionnel, il introduisait une structure de répertoires propre comme /cmds, /config, /sys, ainsi qu’un jeu de commandes spécifique, dont la commande
help
- Les premières limites comprenaient le support du disque dur (HDD de 5 Mo dans QUNIX 0.4) et un démarrage basé sur disquette
Transition vers QNX et croissance
- En raison d’un problème de marque avec AT&T, le nom passe de QUNIX à QNX en 1982, puis QNX 1.0 est officiellement lancé en 1983
- Noyau : environ 10 000 lignes de code C, avec des caractéristiques de microkernel comme l’ordonnancement, le passage de messages et la gestion des priorités
- La plupart des services (système de fichiers, pilotes, réseau, etc.) reposaient sur une architecture de communication par messages
- Prise en charge d’une file de messages réseau transparente, jusqu’à 250 tâches simultanées, et fonctionnement multi-utilisateur
- Vendu 650 $ (en 1983) avec compilateur C, éditeur et support réseau inclus
- QNX 1.2 (1984) : renforcement du pattern matching, de la programmation shell, support IBM AT, baisse de prix, etc.
Entrée dans l’éducation : Burroughs ICON
- Adopté dans le cadre du projet d’ordinateur éducatif standard du ministère de l’Éducation de l’Ontario, il donne naissance à l’ordinateur ICON (80186, 512K de RAM, sous QNX)
- Démarrage via serveur de fichiers en réseau (ARCNET), sans unité de stockage locale, les utilisateurs disposant d’un répertoire personnel hébergé sur serveur
- L’expérience acquise inclut un système avancé avec hypertexte de type « lessonware », divers logiciels éducatifs, des fonctions réseau, audio et une bonne extensibilité
Expansion sur les marchés industriel et commercial
- À la fin des années 1980, il répond aux besoins du marché avec le support de l’IBM PS/2, du LAN, de la GUI et de l’émulation DOS (QDOS, RUNDOS)
- En 1987, QNX 2 apporte des améliorations comme le mode protégé IBM AT, le réseau BSD, des fichiers de 1 To, 32 ports série et une GUI simple (House)
- L’organisation grandit avec l’extension des bureaux et l’installation dans un nouveau siège
Adoption de POSIX et GUI Photon
- En 1991, QNX 4.0 : conformité POSIX, réduction de la taille du noyau (7K, 605 LOC), IPC, réseau et performances améliorés
- En 1994, lancement de QNX Photon microGUI : GUI légère à microkernel, transparence réseau, prise en charge de nombreux appareils
- Photon pouvait évoluer d’environnements contraints en ressources à des GUI riches en fonctionnalités, tout en offrant une API compatible X Window
- L’ensemble de l’environnement de démonstration (réseau, navigateur web, gestion de fichiers, etc.) était suffisamment léger pour tenir sur une seule disquette 1,44 Mo
Systèmes embarqués et distribués, évolution vers Neutrino
- Jusqu’à QNX 4.25 (1997), de nombreuses améliorations en font un OS temps réel de référence dans les grandes entreprises et sur des sites industriels (centrales électriques, médical, transport, spatial, etc.)
- En 1996, QNX Neutrino 1.0 : SMP, POSIX renforcé, large prise en charge CPU, adoption de GNU/GCC, gestion des processus et threads améliorée
- La gestion mémoire et l’isolation des processus deviennent plus rigoureuses, et l’adoption du code réseau de NetBSD améliore sa polyvalence
Partenariats et entrée sur de nouveaux marchés
- En 1998, un partenariat est envisagé avec Amiga (qui adoptera finalement Linux)
- En 1999, Neutrino 2.0/2.1 : UPM (mécanisme de protection au niveau noyau), support multi-architectures comme PowerPC/MIPS/ARM, diversification de l’environnement de développement
- En 1999, collaboration avec Motorola pour entrer sur le marché des systèmes d’infodivertissement automobile (navigation, audio, etc.)
Années 2000 : jusqu’au multimédia, à l’automobile et au mobile
- En 2001, QNX 6.0 : streaming multimédia, gestionnaire de paquets web, intégration d’environnements de développement pour divers CPU/architectures
- Modernisation avec la suite d’outils Momentics basée sur Eclipse (2002), le clustering réseau, IPv6, etc.
- Après son acquisition par Harman International en 2004, QNX se concentre sur les marchés de l’embarqué et de l’automobile, introduit la plateforme QNX CAR et est adopté par de grands constructeurs
- Industrialisation à grande échelle : en 2010, il équipait 17 millions de véhicules et plus de 200 modèles
Acquisition par BlackBerry et évolution mobile/sécurité
- En 2010, Research in Motion (BlackBerry) rachète QNX et l’étend comme système d’exploitation de BlackBerry PlayBook et de BB10 (=BBX)
- Le noyau QNX Safety (certifications ISO/IEC, sécurité mission-critical) permet d’élargir sa présence sur le marché des systèmes embarqués certifiés
- Photon continue d’évoluer, ainsi que les fonctions réseau, multimédia et UI/UX
- BBX (2013) : UI centrée sur les gestes, multitâche, divers frameworks d’applications, avec matériel haute performance
- La limitation de l’écosystème applicatif et la suppression du clavier, entre autres, entraînent un échec face à la concurrence, malgré une durée de vie prolongée jusqu’en 2022
Conclusion
- QNX s’est distingué par son temps réel, sa conception atomique du noyau, son multiprocessing transparent sur le réseau, son extensibilité et sa sécurité
- Il a construit un espace propre grâce à sa compatibilité Unix et à sa présence dans l’industrie, l’automobile et l’embarqué
- Il a échoué face à la concurrence dans l’open source et dans l’entrée sur le marché mobile grand public, mais conserve une réputation de niveau standard industriel dans les domaines mission-critical
1 commentaires
Commentaires sur Hacker News
J’ai des souvenirs amusants liés à cet OS. À l’école primaire, il y avait un ordinateur ICON dans la classe, et je me souviens qu’avec mes amis, on faisait la course pour faire tourner la trackball le plus vite possible. Quand je travaillais chez BlackBerry, j’ai développé une fonctionnalité permettant d’utiliser le QNX BlackBerry comme périphérique Bluetooth HID. Cela permettait aussi de contrôler à distance un ordinateur portable avec le trackpad et le clavier physique, ce qui était vraiment pratique pour les présentations. Mais un PM a demandé que cette fonctionnalité soit limitée au PlayBook, ce qui l’a pratiquement rendue inutile. Je me souviens très bien de Dan Dodge affirmant qu’il ne fallait pas imposer de restrictions à un standard. J’en suis venu à admirer Dan Dodge, et je n’ai aucune envie de retravailler avec ce PM
Je suis surpris d’apprendre que les ordinateurs ICON étaient basés sur cet OS. À l’époque, ils étaient bien plus avancés que les PC ordinaires. À une exception près : la fonction de dialogue entre ICON pouvait facilement faire tomber un autre système, voire tout le réseau
QNX est finalement devenu BlackBerry 10. C’est le meilleur OS mobile que j’aie jamais utilisé. Dommage que si peu de gens s’en soient servis
J’ai utilisé la fonctionnalité HID sur laquelle tu as travaillé, et je l’ai vraiment beaucoup aimée
KDE Connect fait en gros la même chose, mais en mieux. Franchement excellent
J’aimerais qu’on puisse préserver l’expérience ICON via un émulateur. Aujourd’hui, on pourrait probablement émuler tout un réseau ICON dans le navigateur
J’adorais l’esthétique minimaliste de QNX Photon. J’avais gardé une configuration FVWM complexe pour retrouver autant que possible l’esprit de Photon. À titre indicatif, voici une capture d’écran de mon bureau Gentoo en 2004 capture d’écran du bureau
J’ai repris ta configuration et je l’ai gardée pendant plus de 15 ans
Même aujourd’hui, ça a de l’allure. Je me demande si tu as encore tes dotfiles
C’est largement supérieur à mon thème WindowMaker. Ton thème FVWM est vraiment superbe
Ce qu’on voit sur la capture, ce n’est pas un clone de Winamp ?
J’aimais vraiment l’idée de QNX, donc j’en attendais énormément. À l’époque, notre équipe était en train de migrer un processeur alimentaire optique d’un DSP vers du matériel générique (FireWire, 1394). L’isolation des processus de QNX était impressionnante, mais la surcharge des transferts de données basés sur les messages n’était pas très satisfaisante. Au final, on a payé 2 000 dollars pour obtenir la prise en charge du mode isochrone/DMA dans le pilote 1394 de Linux, puis on l’a utilisé avec des extensions RT. La leçon que j’en ai tirée, c’est la « loi de conservation de la laideur ». Dans un système logiciel, il reste toujours quelque part une forme de « laideur » irréductible ; si on améliore un côté, cette « laideur » se déplace ailleurs
Je pense que la « loi de conservation de la laideur » ressemble beaucoup, au fond, au « principe du waterbed ». Dans un système d’une certaine complexité, si on appuie sur un problème à un endroit, il ressort forcément ailleurs. Si vous voulez en savoir plus sur le principe du waterbed, vous pouvez regarder ici
Il existe une idée pour accélérer le passage de messages sur QNX. Elle consiste à utiliser le mécanisme de pagination pour envoyer les messages, c’est-à-dire à ne mettre à jour que la table des pages sans recopier les données. Bien sûr, il reste toujours la surcharge du double chargement de TSS par rapport à un macro kernel, mais c’est rapide. Cela dit, l’élégance a un prix. Si l’on prend en compte la latence, la fiabilité, la stabilité et la justesse, ces critères pèsent bien plus lourd qu’une simple vitesse de traitement
Aujourd’hui, avec la prise en charge complète du DSMP (Direct System Memory Protection) et des performances système bien supérieures, je pense que la surcharge du passage de messages n’est plus vraiment un gros problème. À mes yeux, les autres avantages pèsent davantage
Je me demande si « optical food processor » est une métaphore, ou s’il s’agit vraiment d’un appareil qui découpe des aliments à l’aide d’images
La photo d’ICON sur ce blog, c’est justement mon ICON, reprise depuis mon blog (merci pour la mention de la source). Je partage mon billet sur les ordinateurs ICON sous QNX. Le premier article contient aussi un lien YouTube vers une vidéo de démonstration de QNX
billet ICON
billet LEXICON
Vers 2002, j’ai ouvert une connexion telnet sur un modem câble et j’ai trouvé fascinant de voir que QNX tournait dessus
Vers 1996, j’ai reçu QNX sur une seule disquette, avec à la fois un GUI RTOS et une pile réseau, et j’ai été stupéfait par sa petite taille. Rien que l’installation de Slackware demandait plusieurs disques, donc QNX paraissait incroyable
Je m’en souviens aussi. Il y avait même un navigateur web dans cette petite démo. Si vous voulez l’essayer vous-même, c’est possible ici
En réalité, ce genre de version démo servait justement à mettre les fonctionnalités en vitrine. À l’époque, QNX avait tellement marqué les esprits sur le marché des live CD que tout le monde en disait du bien. À titre de comparaison, il existait aussi un Linux tenant sur disquette avec X11 et un navigateur web, et c’était lui aussi vraiment impressionnant lien vers le commentaire HN
Vers 2000, alors que je commençais à toucher aux desktops Linux, j’ai téléchargé la démo QNX et j’en ai été abasourdi
J’ai construit un système robotique à l’université avec QNX 4. En utilisant des cartes CPU 486/Pentium reliées en réseau, nous avons réussi à mettre en place un robot totalement hard real-time. J’avais été impressionné par le fait que l’appel système de base de QNX (
send/receive/reply) soit implémenté en inline dans le fichier d’en-tête avec à peine trois lignes d’assembleur. À partir de cette expérience, j’ai énormément appris en réimplémentant des fonctionnalités similaires en robotique sur vxWorks, SunOS, Linux, etc.article sur le système robotique
Si vous voulez découvrir QNX sur un Raspberry Pi, voici un article utile guide d’installation de QNX sur Raspberry Pi
Voici aussi une image gratuite de QNX 8.0. On peut la flasher directement sur un Pi 4, et elle peut aussi être adaptée au Pi 400 et au CM4
image gratuite de QNX 8.0 et explications
Si vous voulez l’utiliser dans une machine virtuelle, on peut récupérer d’anciennes images sur archive.org
anciennes images QNX
J’ai créé un serveur audio sous QNX et j’y ai même porté l’encodage et la lecture MP3. Quand nous avons rendu visite au siège, Dan Dodge a demandé à ses équipes de nous aider pleinement. Grâce à cela, nous avons pu lancer notre startup dans de bonnes conditions, et QNX nous a énormément aidés jusqu’à notre migration vers Linux six ans plus tard
Chez Quantum, on disait respecter Unix, tout en présentant QNX comme un OS des années 1990 conçu à partir d’une architecture des années 1980. À l’époque, ils n’avaient pas anticipé GNU, Internet, Microsoft Windows, les développeurs tiers, la barrière d’entrée des applications sous Windows, le web, le shareware, les BBS, les VAR, le mouvement du logiciel libre, etc. Le fait que le marché des systèmes d’exploitation fonctionne selon une logique de winner-takes-all, ainsi qu’une politique tarifaire de plusieurs centaines de dollars, ont été des erreurs fatales. C’était peut-être inévitable à l’époque, mais le problème était bien réel. Bien sûr, ils ont aussi pris conscience tardivement de l’importance du GUI, et Photon GUI n’est arrivé qu’avec QNX 4.1 en 1994