INTRODUCTION

Système d'exploitationNaissance de QNXLe MicrokernelCommunication inter-processus
 

Qu'est ce qu'un système d'exploitation [ haut ]

La fonction principale d'un système d'exploitation est de gérer les différentes ressources d'un ordinateur. Toutes les activités du système, telles que l'exécution des programmes, l'écriture des fichiers sur le disque dur, l'envoi de données à travers un réseau, etc, doivent être gérées de façon cohérente.

Certains environnements demandent une gestion des ressources plus rigoureuse que d'autres. C'est le cas des applications dites "temps réel" dont la bonne exécution dépend de la capacité du système à gérer plusieurs évènements dans un temps raisonnable.

QNX est un système d'exploitation temps réel préemptif, gérant les priorités et multi-utilisateurs. Il repose sur l'échange de messages entre processus et sur l'architecture unique de son Microkernel.

 
Naissance de QNX [ haut ]

Quantum Unix, nom originel de QNX, a été créé par Dan Dodge et Gordon Bell en 1981. Les premières versions étaient destinées aux processeurs 8808 et 6809. Le nom n'étant pas très original, Quantum Unix deviendra plus tard Quick Unix ou QNX. QNX va alors se doter de fonctionnalités novatrices qui le rapproche des standards du marché, notamment grâce à sa compatibilité avec la norme POSIX.

Aujourd'hui QNX se montre toujours aussi novateur avec le développement d'une nouvelle interface graphique nommée Photon. QNX 6, plus connu sous le nom de Neutrino, permet de gérer les threads, le multi-processing (uniquement sur plate forme x86), le kit de développement est désormais livré avec GCC. Neutrino est actuellement porté sur une grand nombre de plate formes (x86, Power PC, SH4...).

 
Le Microkernel QNX [ haut ]

Le Microkernel QNX peut être représentée par le schéma suivant :

QNX est fondé sur un micro noyau (Microkernel) qui gère un groupe de processus systèmes. Le Microkernel possède deux fonctions fondamentales :

Transmission de messages ou IPC : Le Microkernel manie les messages des processus à travers tout le système.
Gestion des processus ou scheduler : le micro noyau travail en étroite collaboration avec le gestionnaire de processus. Il est chargé d'attribuer les ressources du système aux processus qui le demande. C'est de cette partie que nous traiterons par la suite.
Le micro noyau est exécuté suite à un appel système provenant soit d'un autre processus, soit d'une interruption matérielle.

A l'exception de ceux fournit par le Microkernel, tous les services de QNX sont gérés par des processus "classiques". Il en est de même pour les quatre processus systèmes suivant :

Gestionnaire de processus (Proc)
Gestionnaire du système de fichier (Fsys)
Gestionnaire de péripheriques (Dev)
Gestionnaire de réseau (Net)

Les processus système sont pratiquement identiques aux programmes des utilisateurs - ils ne possèdent aucune interface cachée ou privée qui ne serait pas accessible aux programmes des utilisateurs.
C'est cette architecture qui donne à QNX une très grande flexibilité. Depuis que la plupart des services sont des tâches standards de QNX, il est possible d'augmenter les possibilités du système lui-même en ré-écrivant de nouveaux programmes pour lui donner la possibilité d'offrir de nouveaux services !
Les drivers sont eux aussi des processus standards. La couche matérielle est donc totalement transparente pour le système. Pour charger un périphériques, il suffit d'exécuter le driver correspondant.

 
Les communications inter-processus [ haut ]

Dans tout environnement temps réel multi-tâches, lorsque plusieurs processus sont exécutés en même temps, le système d'exploitation doit fournir les mécanismes pour permettre aux différents programmes de communiquer entre-eux.
Lorsqu'une application est conçue comme un ensemble de processus indépendants possédant chacun un rôle déterminé, la communication inter-processus ou IPC permet d'organiser leur collaboration.

QNX fournit un ensemble de services de communication inter-processus qui simplifient le développement des applications. La communication inter-processus de QNX repose essentiellement sur la notion d'échange de messages à travers l'ensemble du système ou du réseau.

Pour QNX, un message est une suite d'octets transmise d'un processus à un autre, sans aucune signification particulière pour le système. Non seulement les messages servent à synchroniser l'exécution des processus, mais le Micro-noyau utilise ces messages pour optimiser l'exécution des processus.

 
QNX et le réseau [ haut ]

D'un point de vue simplifié, un réseau est un système qui permet le partage de fichiers et de périphériques entre plusieurs ordinateurs reliés entre eux.
QNX étend ce concept en considérant le réseau comme une ensemble de ressources homogènes.

Tout programme exécuté sur une machine connectée à un réseau peut directement utiliser les ressources d'une autre machine relié au même réseau. Exécutée sous QNX, une application ne fera aucune différence entre les ressources locales et les ressources situées sur une autre machine. Aucune procédure spécifique n'est à créer à l'intérieur d'une application pour mettre d'utiliser des ressources partagées.
Les utilisateurs ont donc la possibilité d'accéder à n'importe quel fichier, n'importe quel périphérique partagés sur le réseau. De même, ils ont la possibilité d'exécuter une application sur n'importe laquelle des machines connectées au réseau. Les processus peuvent communiquer librement à travers le réseau de la même façon qu'à travers le système local, via le service de communication inter-processus.