La première chose qui nous vient à l’esprit lorsque nous entendons le mot « système d’exploitation » est le programme logiciel utilisé dans nos ordinateurs de bureau et portables tels que Microsoft Windows, Linux, Ubuntu, etc. et Android pour les smartphones. En fait, la plupart des appareils électroniques numériques sont dotés d’une sorte de système d’exploitation développé par le programme du microcontrôleur. L’évolution du microcontrôleur a ouvert la voie à de nombreuses applications de systèmes intégrés qui jouent un rôle crucial dans notre vie quotidienne d’une manière ou d’une autre.
L’un de ces systèmes dont nous avons entendu parler récemment est le système d’exploitation en temps réel (Real Time Operating System, ou simplement « RTOS »). Le RTOS est un système d’exploitation utilisé pour les applications en temps réel, c’est-à-dire les applications qui traitent les données au fur et à mesure qu’elles arrivent dans un laps de temps donné. QNX et VxWorks sont deux systèmes d’exploitation en temps réel différents, largement utilisés dans les environnements industriels et universitaires. Le but de cet article est de faire une comparaison impartiale entre les deux.
Qu’est-ce que QNX ?
QNX est un système d’exploitation commercial en temps réel développé initialement pour les systèmes embarqués par Quantum Software Systems au début des années 1980. La société canadienne a ensuite été rebaptisée QNX Software Systems, puis rachetée par Research in Motion (RIM) pour servir de base à son système d’exploitation BlackBerry 10 et à son BlackBerry Playbook, alors très populaire. La version du système d’exploitation utilisée dans le Playbook était QNX Neutrino, qui reposait sur une véritable architecture micro-noyau. QNX a été le premier système d’exploitation basé sur un micro-noyau à connaître un succès commercial. QNX est essentiellement un système d’exploitation de type Unix basé sur un véritable micro-noyau et une architecture modulaire où les éléments du système d’exploitation fonctionnent comme des tâches, connues sous le nom de gestionnaires de ressources, ce qui permet aux développeurs de désactiver toute fonctionnalité qu’ils estiment ne plus être nécessaire dans le système en question. Le meilleur atout de QNX est qu’il repose sur une communication interprocessus basée sur les messages.
Qu’est-ce que VxWorks ?
VxWorks est un système d’exploitation en temps réel spécialement conçu pour l’informatique distribuée et les applications en temps réel avec des systèmes embarqués. Il s’agit d’un système d’exploitation temps réel propriétaire développé par Wind River Systems, une société californienne spécialisée dans le développement de logiciels embarqués pour les systèmes connectés intelligents. VxWorks est le RTOS leader de l’industrie qui permet de construire des systèmes et des dispositifs embarqués depuis plus de trente ans. Il s’agit d’un noyau monolithique doté de fonctions étendues de communication et de synchronisation entre les processus. Chaque version de VxWorks est unique en raison de son architecture où l’ensemble du système d’exploitation fonctionne dans l’espace du noyau, ce qui signifie que tous les services du noyau et les services utilisateur existent dans le même espace d’adressage, ce qui rend l’exécution du système d’exploitation plus rapide. Il fournit des fonctions de débogage, de contrôle des performances, de gestion de la mémoire, de programmation de l’unité centrale et d’autres fonctions du système d’exploitation par le biais d’appels système.
Différence entre QNX et VxWorks
Les bases de QNX et VxWorks
Les deux systèmes sont des systèmes d’exploitation en temps réel très particuliers, spécifiquement conçus pour des applications en temps réel avec des systèmes embarqués, chacun avec des charges de composants différents avec des fonctionnalités différentes. Les deux systèmes sont largement utilisés dans de grands environnements industriels et universitaires et sont en activité depuis plusieurs décennies. QNX est un RTOS commercial développé par la société canadienne Quantum Software Systems au début des années 1980, qui a été rachetée par RIM en 2010. VxWorks est un logiciel propriétaire développé par la société californienne Wind River Systems, leader de l’industrie spécialisée dans la création de logiciels embarqués pour les produits et systèmes connectés intelligents.
Architecture de QNX et VxWorks
Les deux systèmes d’exploitation utilisent un noyau en temps réel pour les applications critiques qui traitent les données au fur et à mesure qu’elles arrivent, ce qui signifie que le système est soumis à une contrainte de temps réel qui garantit une réponse dans des délais prédéfinis, également connus sous le nom de « délais ». La principale différence réside dans l’architecture – alors que QNX est basé sur une architecture de passage de messages, VxWorks se prête à une architecture de mémoire partagée. Le passage de messages est un élément fondamental de la conception du noyau qui permet au système de transmettre des informations d’une tâche à une autre ou à plusieurs autres dans le système. L’architecture à mémoire partagée fait référence à un système qui possède son propre espace d’adressage privé pour des mémoires physiquement distribuées.
Noyau
L’une des principales différences entre les deux systèmes d’exploitation en temps réel est que QNX est un système d’exploitation basé sur un micro-noyau alors que VxWorks est un noyau monolithique. Un micro-noyau est comme un petit système d’exploitation qui utilise les appels système pour gérer les services de base tels que la gestion de l’espace d’adressage, la gestion des threads et les communications interprocessus. Il s’agit d’un système qui nécessite un ensemble limité de primitives et une dépendance logicielle minimale pour mettre en œuvre un système d’exploitation. Un noyau monolithique, quant à lui, gère tous les services de base et les services définis par l’utilisateur, y compris les communications interprocessus, dans un espace noyau protégé. En tant que noyau monolithique, VxWorks est autonome.
Ordonnancement
Chaque thread ou processus a sa propre priorité dans QNX. Sous QNX, tous les processus s’exécutent sur une base préemptive axée sur la priorité, ce qui signifie que le processus ayant la priorité la plus élevée accède en premier à l’unité centrale et que les priorités vont de 0 à 31. L’ordonnancement se fait en temps réel et chaque thread hérite par défaut de la priorité de son parent. Lorsque deux threads partagent la même priorité, d’autres méthodes d’ordonnancement sont utilisées par QNX, telles que FIFO, Round-Robin et Sporadic Scheduling. VxWorks, quant à lui, n’utilise que deux types d’algorithmes d’ordonnancement, l’ordonnancement préemptif basé sur la priorité et l’ordonnancement Round-Robin. Ensemble, ils offrent un plus grand degré de contrôle aux utilisateurs pour une programmation efficace.
Résumé de QNX Vs. VxWorks
Les deux sont des systèmes d’exploitation en temps réel basés sur le noyau et destinés aux applications en temps réel qui exigent que les tâches soient traitées et achevées au fur et à mesure qu’elles arrivent dans un délai prédéfini, autrement dit dans les délais impartis. Les deux sociétés existent depuis plus de 25 ans et sont spécialisées dans le développement de produits et de systèmes embarqués, mais c’est là que s’arrêtent toutes les similitudes. QNX est un système d’exploitation en temps réel basé sur un micro-noyau qui est assez fascinant en soi, grâce à son architecture basée sur le passage de messages qui est idéale pour créer des systèmes distribués fiables. VxWorks est un noyau monolithique basé sur une architecture à mémoire partagée, ce qui le rend idéal pour les grands environnements industriels tels que les systèmes automobiles, l’avionique, l’électronique grand public, etc.