|
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.
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 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.
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.
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.
|
|