PDA

Afficher la version complète : QNX, l'os qui fait du real time :p



GrunDiG
04/08/2005, 20h16
QNX ~ Une OS en temps réel


Sommaire

I)Introduction
1) Bienvenu
2) L'histoire de QNX

II) Comment fonctionne QNX?
1)Architecture du système
2) IPC
1. Introduction
2. Les signaux
3. Les messages
4. Les proxies
3)Le sheduler
4)Le manager de processus
5)Le système de fichier
6)Le réseau
7)Photon : le GUI de QNX

III) Installation et configuration
1)Où le télécharger
2)Installation
3)Configuration des peripherique
4)Configurer votre réseaux

IV) Les software
1) Le projet openqnx
2)Liste non exhaustive des software par défaut
V)Conclusion
VI)Annexe
1) Lexique
2) Remerciement


I)Introduction

1) Bienvenue
Cette documentation a pour but de vous expliquer ce qu'est QNX et sont fonctionnement. QNX (prononcé Q à l'anglaise puis 'nix' ou Q-N-X) est une os de type unix qui marche en temps réel (nous verrons plus en détail ce que c'est).

2) L'histoire de QNX
En 1980, deux ingenieur de l'université de Waterloo, Dan Dodge et Gordon Bell étudiaient l'informatique, plus précisement les système d'exploitation. En c'est en tant qu'étudiant qu'ils ont crée un noyau de système d'exploitation en temps réel. Puis, convaincus que leur produit pourrait se vendre, ils ont crés Quantum Software Systems. En 1982 la première version de QNX étais disponible pour les CPU Intel 8088.

Élaboré sur une base Unix, il est stable, sécuritaire et rapide et est réputé pour ses uptime très élevé.
QNX permet de faire des clusters afin effectué des calculs complexes.

Au début des années 90, Quantum Software Systems s'appelle desormais QNX Software Systems pour éviter toute confusion avec une fabrique de disques durs.

Au milieu des années 90, le noyau de QNX est réécrit pour le rendre compatible à la normes POSIX. Le résultat est QNX4, de plus il est munit d'une interface graphique : Photon microGUI.

Vers la fin des années 1990, Quantum a décidé de créer une nouvelle version en conséquence, en 2001 est sorti Neutrino.

II)Comment fonctionne QNX?

1)Architecture Système
QNX est équipé d'un microkernel qui marche en temps réels (on parle d'un système temps réel lorsque ce système informatique contrôle (ou pilote) un procédé physique à une vitesse adaptée à l'évolution du procédé contrôlé, merci wikipedia http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif) Dans ce chapitre, nous verrons le fonctionnement de ce microkernel qui est divisé en 4 partie dont deux « gros »: l'ICP et le sheduler
et deux « petits » : le réseau et le système de fichier.

2)Inter Processus Communication: IPC
Les processus communique entre eux grace a trois type d'IPC ;
-Les signals
-Les messages
-Les proxies
Voyons ça plus en détail http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif :

1.Les signaux
Vous en avez probablement déjà entendu parler, vous en faites un quand vous faisez un kill.
En général, les processus ne font que « mourrir » suite à la reception du signal, mais désfois, ils l'ignorent (tous dépend des circonstense...).

2.Les message
Les messages sont des paquets de donnles qui voyages synchronisés. Ils sont sous forme paquet, pour pouvoir être utiliser aussi facilement en réseaux qu'en local. (Imaginez ce qu'on peut faire si on peut échanger des message entre processus de differente machine http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif) Trois fonctions gère les message : Send(), Receive() et Reply(). Quand un processus envoie des données a un autre, il envoie à l'autre processus reçoit les données. Ensuite il attend de recevoir une réponse (avec Reply()), c'est la ou les processus se synchronises, pendant ce temps l'autre processus est en mode « attente-reception ». Le premier processus est alors de nouveau prêt a renvoyé des données. Mais, où se trouvent les données qui sont en attente? Pas dans le microkernel, il enregistre rien, il fait tout simplement attendre l'autre processus avant de lui envoyer le Send().

3. Les proxies
C'est une sorte de message qui ne bloque pas le processus, pratique quand on veut pas de Reply()... Et la encore le microkernel ne fait que de rediriger le message, il n'enregistre toujours rien.


3) Le Sheduler
Il s'occupe de gerer les processus s'activent, quand leurs temps execution est terminé et quand ils débloquent. Les processus ont une priotité classé entre 0 et 31. L'os execute les processus prêt avec la priorité la plus haute. Ensuite il y a trois manière de gèrer les priorotié :
-FIFO : le processus s'execute jusqu'a ce qu'il laisse sa place ou qu'un autre processus de priorité plus importante arrive.
-Round-Robin : Même chose que FIF0, sauf qu'il laisse sa place lorsque son temps d'execution est terminé.
-Adaptif : il baisse sa priorité de un quand son temps d'execution est terminé, et reste jusqu'a c qu'il soit bloqué, et la il revient a sa priorité de base.

4)Le manager de processus
C'est un processus qui execute les autre processus a la place du microkernel, il a trois manière pour les lancé : fork(), exec() et spawn(). Les 2 première viennent de la normes POSIX et la dernière est caracteristique de QNX.
-Fork() ; il fait une simple copie du processus avec toute les données.
-Exec() ; il remblace le processus par un nouveau processus. (Donc si on veut crée un nouveaux processus on fork puis on exec...)
-Spawn() ; il fait un nouveau process qui est l'enfant de celui qui l'a crée. Donc on est pas obliger de faire un fork() suivit d'un exec pour créer un sous processus. C'est donc plus rapide, et en plus le spawn() peut se faire sur n'importe quelles machines du réseau.

5)Le système de fichier
Toute OS a un système de fichier, celui-ci gère ouverture, fermeture, la lecture et l'écriture des fichiers. QNX gère 5 types de fichier :
-Les fichier réguliers (les *.jpg, *.txt, etc);
-Les dossier, qui sont comme des fichier normaux, sauf qu'ont peut pas écrire dessus.
-Les liens symbolique. Les "." et ".." que l'on retrouve dans chaque répertoire, sont en fait
des liens respectivement sur le répertoire courrant et le répertoire parent. Il existe 2 types de liens :le liens symbolique et le hardlink. La plupart du temps le symbolique est utilisé, car le hard peut corrompe les fichiers : si tu efface un hard link, tu efface le fichier, tandis que dans le cas du symbolique tu efface seulement les informations permettant de pointer dessus. Si un fichier a plusieurs liens, ou s'il a plus que 16 caractères de long, le lien est conservé dans le fichier /.inodes
-Les fichiers qui sont en faite des péripherique (ils sont dans /dev)
-Les Pipe et FIFO ; une pipe est un genre de fichier qui peut etre lu mais qui n'existe pas, le système de fichier s'occupe de faire un buffer pour le contenir (utiliser pour certain output), Les FIFO c'est la meme chose, sauf que ça garde les données dans un « vrai » fichiers

Le systèmes de fichiers est tout ce qu'il y a de plus standart (exactement comme ceux sous linux).
Sauf qu'il est un peut optimisé : il se sert d'un buffer hardware pour acceder au fichier les plus utiliser, il est « multi-tread », il « devine » quand lorsque les fichiers temporaires ne seront pas utilisé longtemps et ne les écrit que dans le cache, et pour finir en beauté il peut crée un disque avec la ram qui peut allé jusqu'a 8 méga, c'est pas beau ça http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif.

QNX peut aussi monté des partitions windows et autre, d'ailleur, il s'en occupe automatiquement.

6)Le réseau
Le « Network Manager » de sont vrai nom, s'occupe de faire les liens entre les Send(), Reply et Receive. En gros, le network manager permet de faire communiqué les differentes machine du réseaux (souvant appelées nodes). De plus, si vous voulez un réseaux plus rapide, il suffit de mettre 2 carte réseaux par machines ; Network Manager s'occupe d'utilisé les 2.

Et, biensur, QNX permet de pouvoir se « promener » sur le réseaux de manière simple :
Si vous voulez utilisé voir un fichier sur la machine #1, vous tapez la commande :
$ vi //1/repertoire/fichier.txt
Cette commenade execute sur votre machine la commande, parcontre si vous faites
$//1 vi /repertoire/fichier.txt
Cette commande executer sur la machine appelée la commande. Pratique non?

7)Photon : le GUI de QNX
L'interface graphique de QNX s'appelle Photon, c'est aussi un microkernel. Il est tout petit (environ 40 ko). Il a une interface client serveur, tout comme X Window. Il est très pratique a utilisé car il a tout une serie de boutons, listes, barres de progression prédéfinies.


III)Installation et configuration
1) Où le télécharger
Vous pouvez téléchargez QNX sur www.openqnx.com.
Vous avez plusieurs choix pour télécharger QNX ;
Prendre l'installer (il existe pour windows, linux, et solaris) il ne fait que 25 mo environ, le reste vous le téléchargez sur internet
Prendre le iso qui contient passablement d'application. Le iso fait a la fois live-cd et installer.

2) Installation
Très intuitif, il suffi choisir l'option « live cd » (si mes souvenir sont bon, sa s'appelle plutôt « boot from the CD » ou quelque chose dans le genre) ou l'option « Install QNX in the harddisk » ou quelque chose du genre. Pui choisir la partition, après quelque minute vous avez un joli menu avec « Login » et « Password », dans le login mettez root et le password mettez votre mot de passe http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif.

3) Configuration des peripherique
Apart règlez la résolution de l'écran et les couleur, il n'y a rien a faire, QNX s'occupe de tout.

IV) Les software
1) Le projet openqnx
OpenQNX est une communauté d'utilisateur QNX qui s'occupe de porter les logiciel libre tel que Mozilla, OpenSSH, etc pour QNX. Je vous conseille d'allez faire un tour

2) Liste non exhaustive des software par défaut
Voici une petite liste des soft qu'il y a sur QNX :
-Voyager : c'est le navigateur web, il ressemble pas à Mozilla ou à Firefox, mais c'est un peut comme la dernière version d'Opéra http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif
-Doom et Quake III arena : bon ce sont que des démo mais si vous acheter le jeux vous pouvez le faire tourné sur QNX
-L'installer : il permet d'installez des programme à partir du CD ou à partir d'une base de données sur le web.

Bon y'en a pas mal d'autre mais je vous laisse les découvrir vous même http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

V)Conclusion
QNX est un bon système complet, rapide, sécurisé. Bon c'est sûr que tout le monde a pas vraiment besoin d'une OS en Temps réel, elle sont surtout utilisé dans les centrale nucléaire, banque et aéroport, mais c'est fun de s'amuser avec l'interface réseau de QNX http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif.

VI)Annexe
1) Lexique

OS : Un système d'exploitation (SE ou OS en anglais pour Operating System) est un ensemble cohérent de logiciels permettant d'utiliser un ordinateur et tous ses éléments (ou périphériques). Il assure le démarrage de celui-ci et fournit aux programmes applicatifs les interfaces pour contrôler les éléments de l'ordinateur. Les programmes applicatifs n'ont traditionnellement pas vocation à être considérés comme partie intégrante du système, mais ce point de vue est en train d'évolue
-Source : fr.wikipedia.org/wiki/OS

Unix : UNIX est un système d'exploitation, à usage principalement professionnel, dit ouvert (open systems), multitâche et, multi-utilisateurs, créé en 1969. Il a donné naissance à toute une famille de systèmes, dont les plus populaires en 2004 sont GNU/Linux, *BSD et Mac OS X.
-Source: fr.wikipedia.org/wiki/UNIX

Cluster : Techniques consistant à regrouper plusieurs ordinateurs indépendants (appelé nœuds) pour permettre une gestion globale et adresser les limitations d'un ordinateur: * pour augmenter la disponibilité* faciliter la montée en charge * permettre une répartition de la charge* faciliter la gestion des ressources (CPUs, Mémoire, Disques, bande passante réseau)
Source: fr.wikipedia.org/wiki/Cluster

Processus : Un processus (en anglais, process), en informatique, est défini par :* un ensemble d'instructions à exécuter (un programme) ;* un espace mémoire pour les données de travail ;* éventuellement, d'autres ressources, comme des descripteurs de fichiers, des ports réseau, etc.
Source: fr.wikipédia.org/wiki/processus_(informatique)

POSIX : POSIX est le nom d'une famille de standards définie par l'IEEE et formellement désignés IEEE 1003. Ces standards ont émergé d'un projet de standardisation des APIs des logiciels destinés à fonctionner sur des variantes du système d'exploitation UNIX. Le terme POSIX a été suggéré par Richard Stallman en réponse à la demande de l'IEEE pour un nom facilement memorisable. C'est un acronyme de Portable Operating System Interface, dont le X exprime l'héritage UNIX de l'API.
-Source: fr.wikipedia.org/wiki/POSIX

2)Remerciement

Voici la liste des personne que je voudrais remercié pour m'avoir guidé dans mon première article (oui c'est mon première http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif)

-Timmy et mik_suse ; pour m'avoir aidé a structuré mon article et aidé a definir quelque mots
-Neolinux, Bluetux et donatello ; pour avoir lu mon premier jet
-Tout les autre que j'ai oublié, pour m'avoir aidé

Voilà j'ai terminé mon première article http://www.alionet.org/style_emoticons/<#EMO_DIR#>/cool.gif alors, vous en pensez quoi malgré mon plus que mauvais français ??

PS : pour ceux qui veulent une meilleur mise en page je peux leur envoyé un fichié *.sxw http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

Quelques screenshots :

http://img223.imageshack.us/my.php?image=snap11sc.jpg
http://img223.imageshack.us/my.php?image=snap26kx.jpg

aldrik
05/08/2005, 10h14
Extrêmement intéressant, merci pour ce topic

siko
05/08/2005, 16h46
J'aimes bien ton article il est très intéressant. http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

Amo
05/08/2005, 18h22
merci GrunDiG

avec ça et l'iso que tu m'as fais télécharger je suis paré à l'installation de QNX (au fait on le prononce lettre par lettre ou pltôtun truc du genre "ciounix" ? LoL question à deux balles)

très bon tuto en tout cas http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

GrunDiG
05/08/2005, 18h24
Merci pour ses compliment http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif Mais, comme me l'as suggerer Spyhawk, je devrais peut etre rajouter quelque chose sur le real time (ce que c'est, a quoi ça sert, comment ça marche, le comparer avec un autre système etc etc), donc si vous desirez un complement d'information, y'a qu'a demandé http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

Rennou
05/08/2005, 19h25
Je veux bien parce que j'ai pas tout suivi.

GrunDiG
05/08/2005, 20h15
Peux-tu me dire ce que tu n'as pas compris alors, ça m'aiderai bien http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif merci d'avance

Rennou
05/08/2005, 22h50
Quel est le principe du temps réel par rapport à un autre OS ? Parce que la définition que tu donnes, je comprends pas bien.

Le lien que tu donnes pour télécharger QNX demande de s'inscrire sur le forum, j'ai pas trop envie, on doit pouvoir le trouver ailleurs, je vais chercher.

<div class='quotetop'>Citation </div>
Prendre l'installer (il existe pour windows, linux, et solaris) il ne fait que 25 mo environ, le reste vous le téléchargez sur internet[/b]Qu'est-ce que c'est que ce bordel ? C'est un OS qui s'installe depuis un autre ou quoi ?

devloop
05/08/2005, 23h41
Je savais pas comment on prononçait QNX... j'aurais plutôt dit Cul-and-X http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/blushing.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/whistling.gif

corwin
06/08/2005, 00h43
Un OS Real-Time???
Non de Zeus, mais il fait comment, on sais bien quand il s'agit du temps, tout est relatif????

Ok, je sort!

abgech
06/08/2005, 07h09
Navré d'être didactique ce matin, mais mon ancien boulot (prof) me colle à la peau http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif.

Dans un système temps réel, la durée d'exécution d'un traitement est une des données du traitement, c'est-à-dire que cette durée des traitement est soit:
- impérative, le traitement doit se terminer exactement au terme de cette durée
- le traitement doit être terminé au plus tard après cette durée.

Pour ce faire (indépendamment de la programmation du traitement), le système d'exploitation ne doit pas gérer les priocessus par pré-emption mais uniquement par priorités. Ce qui les rend peu pratiques pour une utilisation en informatique générale, par contre indispensable en contrôle de processus physiques.
Par exemple la boucle suivantes (qui est sans doute un gros bogue !):
for (x = 0; x < 2; x++) x--;
placée en haute priorité va totalement figer la machine dans un SE temps réel, alors qu'elle va simplement la ralentir dans un système pré-emptif.

Je crois qu'il existe des noyaux Linux temps réel, mais je n'ai pas vraiment d'informations à ce sujet.

De toutes façons, la plupart du temps les applications temps réels tournent sur du matériel sans SE. Le SE temps réel n'et utilisé que durant la phase de développement. QNX, dans ce cadre a, effectivement, très bonne réputation.

GrunDiG
06/08/2005, 13h14
Originally posted by Rennou@vendredi 05 août 2005 à 21:50
Quel est le principe du temps réel par rapport à un autre OS ? Parce que la définition que tu donnes, je comprends pas bien.

Le lien que tu donnes pour télécharger QNX demande de s'inscrire sur le forum, j'ai pas trop envie, on doit pouvoir le trouver ailleurs, je vais chercher.

<div class='quotetop'>Citation
Prendre l'installer (il existe pour windows, linux, et solaris) il ne fait que 25 mo environ, le reste vous le téléchargez sur internetQu'est-ce que c'est que ce bordel ? C'est un OS qui s'installe depuis un autre ou quoi ?
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=48828)</div>
[/b][/quote]

Ben oui tu peux l'installez a partir d'une autre os http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif mais tu peux aussi prendre un iso qui se lance comme pour les install linux, je trouve ça pas mal ... quand on veut pas attendre 5h de dl pour un iso, on peut prendre un petit installer de 20 mo http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

<div class='quotetop'>Citation </div>
Je crois qu'il existe des noyaux Linux temps réel, mais je n'ai pas vraiment d'informations à ce sujet.[/b]

Oui, il existe RTlinux, merci pour ton explication http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif
<div class='quotetop'>Citation </div>
(au fait on le prononce lettre par lettre ou pltôtun truc du genre "ciounix" ? LoL question à deux balles)[/b]

Bah moi je dit 'kiounix' http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif