RT Linux : Linux temps réel

Temps réel est une expression utilisée à tout va pour un grand nombre de choses. Mais la notion de système informatique temps réel répond à une définition bien précise : "un système d'information dont le fonctionnement ne dépend pas que du résultat logique des algorithmes, mais également de l'instant où ces résultats ont été générés".

Pour présenter la chose plus clairement, un système temps réel attache autant d'important au résultat d'une opération qu'au temps écoulé pour l'obtention de celui-ci. Il ne suffit pas que la réponse soit exacte, il faut qu'elle arrive au moment attendu. C'est ce qu'on appelle la restriction temporelle. Attention, il ne faut pas confondre pour autant la notion de temps réel et la rapidité d'exécution d'un programme. Certains systèmes temps réel fonctionnent avec une marge de temps très importante. Imaginez, par exemple, un escargot virtuel. Il se déplace avec une extrême lenteur et a donc largement le temps de choisir son chemin dans un parcours d'obstacles. Il s'agit pourtant d'un système temps réel car il doit prendre la bonne décision dans un certain intervalle de temps. Au-delà du temps imparti... plus d'escargot. En pratique, on trouve souvent ce genre de systèmes dans les pilotes automatiques de gros navires (paquebots, pétroliers...). Second point important : ne pas confondre système temps réel et système EN temps réel. Ceux-ci sont des systèmes rapides destinés à donner une impression de réalité. Les jeux et autres simulateurs en sont un bon exemple.

Le Pid

Un algorithme PID (pour Proportionnel Intégral Dérivé) a la tâche de contrôler une action en fonction de données reçues. Prenons, par exemple, un système de climatisation. En fonction de la température de la pièce, on fait varier la puissance du système de refroidissement. Si la température est trop élevée, on augmente le rendement de la climatisation, si elle est trop basse on diminue la puissance et enfin, si elle est correcte on maintient la puissance actuelle. Bien sûr, pour que le système fonctionne de manière optimale, il faut que les variations de puissance soient proportionnelles à l'écart de température. Pour qu'un algorithme PID fonctionne, il y a plusieurs paramètres à gérer :

Pi : Période de la tâche i. Comme l'algorithme PID doit être relancé périodiquement, il faut lui définir un intervalle de temps entre les exécutions sussessives de l'algo : une période.

Di :Temps limite pour la tâche i. Il s'agit du temps maximum alloué pour accomplir le travail. Dans notre exemple, la variation de puissance de la climatisation.

Ci : Temps de calcul maximal pour la tâche i. Comme l'algorithme lui-même met un temps donné pour s'exécuter, il faut définir un temps maximal de calcul. Ici, il s'agit principalement de la détection de température et du calcul de la variation de puissance du climatiseur.

Bien sûr, pour une seule tâche à accomplir, les problèmes de vitesse d'exécution sont facilement résolus : il suffit de choisir le matériel en conséquence (climatiseur, détecteur de température, processeur). Mais si le système doit gérer plusieurs tâches (plusieurs locaux par exemple), notre travail devient plus ardu.

RT Linux

Un système Linux classique utilise un système de temps partagé. Ce système ne convient donc pas pour le temps réel. Un Linux spécifique a donc été créé : RT Linux. Dans le principe, pour rendre un système temps réel, il faudrait modifier le kernel Linux pour y intégrer la notion de restriction temporelle afin de le rendre "prévisible". La solution choisie par l'équipe de développement de RT Linux consiste à construire un petit noyau (indépendant du kernel Linux), intégrant un gestionnaire de tâches. Le noyau de Linux tourne au dessus de celui-ci, partageant le temps processeur avec les autres tâches temps réel. Le noyau Linux devient une tâche du système temps réel. Dans la pratique, le gestionnaire de tâche est un module. Il est donc possible de le charger ou le décharger à volonté comme n'importe quel module du système.

Installation de RT Linux

Pour ajouter les fonctionnalités temps réel à un système Linux, il faut appliquer un patch aux sources du kernel. Cette manipulation n'est pas destinée à inclure les notions temps réel dans le kernel, mais simplement à ajouter un module. Une fois compilé, le kernel est plus ou moins identique à la version non patchée, si ce n'est qu'il est ensuite prêt à accueillir le support temps réel. A l'heure où nous écrivons ces lignes, il existe deux versions de RT Linux. La première pour le kernel 2.0.36 et la seconde pour la nouvelle génération 2.2.3. Pour une version 2.0.36, après avoir récupéré et décompressé le tarball RT Linux :

1. Décompressez une version officielle du kernel 2.0.36 dans le répertoire où se trouvent les sources RT Linux. Un nouveau répertoire ./linux sera donc créé.
2. Passez dans ce répertoire (cd linux) et appliquez le patch : patch -pl <../kernel_patch
3. Lancez la compilation du kernel à l'aide des commandes habituelles.
4. Configurez et installez Lilo.
5. Bootez sur le nouveau kernel supportant RT Linux.

Le répertoire ./rtl contiendra les modules permettant l'activation du support RT et des exemples de programmes permettant de les mettre en oeuvre. Bien sûr, RT Linux n'est utile que dans des cas bien précis, habituellement dans un contexte professionnel et/ou scientifique.

Linux Magazine France n° 8 - Juillet 99