![]() ![]() ![]() | QNX Système temps réel : Introduction |
QNX est un système d'exploitation temps réel préemptif, gérant les priorités, l'échanges de messages, multiutilisateurs, avec une gestion de réseau répartie. Quantum Unix (nom originel de l'OS) a été créé par Dan Dodge et Gordon Bell en 1981. Les premières versions de l'OS ont tournés sur un 8808 et un 6809. Le nom n'étant pas très original il deviendra plus tard Quik Unix ou QNX. C'est à partir de cette version que QNX va se doter de fonctionnalités novatrices qui le rapproche des standards du marché, notamment sa compatibilité POSIX.
QNX 4 sera la dernière version du système avant celle que nous connaissont aujourd'hui. QNX a toujours souffert de son prix assez élevé. La société QNX anciennement QSSL (Quantum Software System Limited) a rapidement compris qu'il leur serait plus rentable de rendre l'OS commercial. La encore la license sera d'environ 2000 francs un prix qui diminuera en cas d'achats groupés. Résultats ? Plusieurs millions de licences achetées rien qu'en France. Ses possibilités temps réel, sa stabilité, son extrême souplesse (QNX offre une très grande liberté au développeur jusqu'à la programmation d'un nouveau scheduler !) lui permettent d'être intégrable dans les applications verticales critiques comme le suivi d'une centrale nucléaire ou bien totalement à l'opposé le système de guidage d'une voiture.
Les exemples d'applications de QNX dans l'embarqué ne manquent pas : des appareils de dialyse, des systèmes de transaction bancaire de type Vis... L'OS canadien est également utilisé dans le système de réservation du Shuttle (transport de véhicules automobiles par le tunnel sous la Manche). Mais c'est surtout dans le secteur de l'équipement automobile que QNX est populaire, notamment pour des applications de guidage routier, de gestion de trafic ou de flotte de véhicules . Né dans
les années 80, QNX vit aujourd'hui une seconde jeunesse. En témoigne un récent accord passé avec IBM, qui s'engage à proposer des composants Java pour répondre à la demande des développeurs QNX
Neutrino. De même, 3Com a choisi QNX pour animer sa console d'accès à Internet Audrey.
Un bref historique des OS / microkernel créés par la société:
La responsabilité d'un système d'exploitation est de gérer les ressources de l'ordinateur. Toutes les activités du système - gérer les applications, écrire les données sur le disque dur, envoyer des données au travers d'un réseau, etc... - doivent cohexister de la manière la plus efficace et la plus trasparente possible.
Certains environnements exigent pour fonctionner des ressources qui en plus d'être plus importantes doivent être mieux gérées que d'autres. Les applications temps réel dépendent actuellement du système d'exploitation pour gérer plusieurs événements dans un laps de temps déterminé.
QNX est idéal pour les applications temps réel. Il permet le multi-tâches, le système de gestion de priorités entre processus préemptif, et une alternance entre les différentes tâches très rapides - tout les ingrédients pour un système d'exploitation temps réel - .
QNX est ainsi extrêmement flexible. Les développeurs peuvent aisément modifier l'OS afin de l'adapter au besoin de leur application. A partir d'un noyau (kernel) aux fonctionnalités réduites au stricte minimum avec quelques petits modules au travers d'un gros réseau utilisé par plusieurs centaines d'utilisateurs, QNX vous permet de configurer le système afin d'utiliser uniquement les ressources dont vous avez besoin vous permettant de gérer efficacement le système au final.
QNX doit ses avantages d'efficacité, de modularité et de simplicité à deux pricipes fondamentaux:
Tous les services proposés par QNX exceptés ceux propore au microkernel sont gérés par les processus QNX standards. Une configuration du système typique possède les processus suivants:
Les processus système sont pratiquement identiques aux programmes des utilisateurs - ils n'ont aucune interfaces cachées ou privées qui ne seraient pas accessible à ces programmes - C'est cette architecture qui donne à QNX cette possibilité d'être extensible dans tous les domaines. Depuis que la pluspart des services sont des tâches standards à QNX, il est vraiment très simple d'augmenter les possibilités de l'OS lui-même : vous n'avez juste qu'à lui écrire de nouveaux programmes pour lui donner la possibilité d'offrir de nouveaux services ! En fait la limite entre le système d'exploitation et les applications peut devenir pratiquement invisible. La réel différence est que les services de l'OS gèrent des ressources pour les clients.
Les drivers de périphériques sont des programmes qui évite au système d'exploitation d'avoir à se soucier de tous les détails requis pour supporter le hardware d'un PC.
Depuis que les drivers démarrent comme des programmes standard, ajouter un driver à QNX n'affecte aucunement l'OS. La seule modification que vous aurez à faire pour mettre à jour l'environnement de QNX sera de lancer le driver.
Lorsque plusieurs processus tournent en même temps, comme dans tout environnement temps réel multi-tâches, l'OS doit fournir les méchanismes nécéssaires afin de donner la possibilité aux programmes de communiquer ensemble.
IPC est la clé pour assimiler une application comme un ensemble de processus coopérants ensemble dans lequel chacun d'eux tient un rôle défini et clair.
QNX permet un simple mais puissant jeux d'IPC qui simplifie grandement la tâche de développement d'application tournant autour de la communication entre process.
QNX a été le premier OS commercial de sa catégorie à faire de la transmission de messages la partie fondamentale de l'IPC. QNX doit sa puissance, sa simplicité, et son élégance à l'intégration complète de système de transmission de messages au travers du système tout entier.
Dans QNX, un message est un paquet d'octets échangé entre deux process. QNX n'accorde aucune importance au contenu du message - les données dans le message a une signification pour son émetteur et pour son destinataire mais pour personne d'autre -.
La transmition de message ne permet pas seulement l'échange de données entre programmes, mais permet aussi une synchronisation de l'éxécution d'un grand nombre de process. Lorsqu'ils envoient, recoivent et retournent des messages, les programmes subissent des "changements d'états" qui affectent leur manière de fonctionner. Connaissant ces différents états et les priorités de ces process, le microkernel peut alors les gérer aussi efficacement que possible afin de permettre le meilleur avec les ressources CPU disponibles. Cette méthode solide - la transmition de messages - est ainsi toujours présente en tout point du système.
Les applications temps réel et les programmes ayant un rôle important à jouer demandent un IPC digne de confiance, parce que les process qui démarrent ces applications sont treès fortement liés. La discipline imposé que le système de transmition de messages donne une excellente gestion et une grande stabilité à vos applications.
Un réseau en simplifié est un système qui permet l'échange de fichier de contextes de périphériques entre plusieurs ordinnateurs connectés. QNX va bien plus loin que cette simple définition et intègre un réseau entier à l'intérieur d'un seul et homogène jeu de ressources.
Tout programme sur toute machine sur le réseau peut directement utiliser les ressources d'une autre machine. En allant plus loin on peut affirmer qu'il n'y a pratiquement aucune différence entre les ressources locales et les ressources situées sur une autre machine - aucune procédure n'est à créer à l'intérieur d'une application pour permettre d'utiliser des ressources exterieurs - . En fait un programme aura besoin d'un code spécial pour être capable d'accéder à une ressource comme un fichier ou un contexte qu'il soit présent en local ou à un autre endroit du réseau !
Les utilisateurs devraient, pouvoir accéder depuis n'importe quel endroit du réseau à des fichiers, profiter de n'importe quel périphérique, et faire fonctionner n'importe quel application sur n'importe quelle machine connecté au réseau (à condition bien sûr qu'il ait les authorisations nécéssaires). Les process peuvent eux aussi dans le même principe communiquer entre eux le long du réseau). Les process peuvent eux aussi dans le même principe communiquer entre eux le long du réseau. Le système IPC de QNX permettra cela de la manière la plus éfficace possible.
Le microkernel Neutrino est très petit: 10ko à 12ko, ce qui permet une grande possibilité d'embarquement, aussi faut-il qu'il supporte plusieurs platformes, c'est actuellement le cas, et voici les processeurs supportés: