Information industrielle : Linux renforce son intérêt pour le temps réel

MESURES 818 - OCTOBRE 2009 - www.mesures.com 31
S
olutions
INFORMATIQUE INDUSTRIELLE
Linux renforce son intérêt
pour le temps réel
Linux gagne chaque jour des parts de marc dans le secteur de linformatique
embarqe. Seul frein à cette géralisation : son manque de terminisme. A
l’inverse, les systèmes d’exploitation temps el sont capables des meilleures
performances mais restent très, voire trop spécialisés. Voici quelques pistes pour
vous aider à choisir entre Linux et un sysme d’exploitation temps réel.
Il existe une grande différence entre les
systèmes dexploitation temps réel et
les systèmes d’exploitation bas sur
Linux. Les premiers, aussi appelés
RTOS (pour Real Time Operating Systems)
sont des systèmes proprtaires conçus s-
cialement pour effectuer du traitement ter-
ministe. Les seconds font partie du monde
des logiciels libres. Il s’agit de systèmes dex-
ploitation géralistes (GPOS, pour General
Purpose Operating System), davantage portés
sur les applications bureautiques.
Le mariage des deux philosophies (logiciel
libre et traitement temps réel) suscite un
intérêt évident pour les utilisateurs industriels.
Les éditeurs travaillent donc depuis
longtemps sur le sujet. Difrentes techni-
ques ont été mises au point pour conférer à
Linux des capacis de traitement temps el.
On distingue deux principales thodes :
rendre le noyau préemptif ou ajouter un
second noyau temps réel.
Transformer Linux
en un OS temps réel
Rendre le noyau préemptif (on parle aussi
de “kernel préemptif”) revient à modifier le
noyau de Linux afin d’associer aux différentes
ches des niveaux de priorité, les tâches
prioritaires “prenant la main sur les autres.
Cela duit le temps pendant lequel le noyau
traite des sections de code non prioritaires.
Cette approche cessite l’installation d’un
patch spécifique sur le noyau Linux, une
méthode difficile à appliquer lorsqu’il s’agit
dassurer le suivi ou la mise à niveau dun
grand parc d’équipements. Sans compter
que, pour les applications critiques nécessi-
tant une certification (norme ronautique
DO-178B ou norme de sécurité
IEC 61508, par exemple),
c’est tout l’ensemble noyau
et patch qui doit être certifié
à chaque modification ou
changement du patch.
Cette méthode requiert par
ailleurs un grand savoir-faire
si l’on veut assurer un déter-
minisme pous. En effet, la charge
du processeur est partie entre les ches
prioritaires et non prioritaires, mais il peut
arriver que certaines instructions non prio-
ritaires soient trop complexes ou trop
longues pour le temps qui leur est accordé
à chaque temps de cycle. C’est donc souvent
l’application tout entre qui doit être adaptée
afin de duire la taille de ces instructions.
Un travail fastidieux, qui nécessite de tester
absolument toutes les instructions du noyau.
De plus, ces tests doivent être réalis dans
des conditions de charge processeur proches
de celles qui seront rencontrées dans l’envi-
ronnement réel de l’application, ce qui est
quasiment impossible dans la pratique. Du
coup, me si cette thode est efficace en
théorie, la complexité du noyau Linux est
telle qu’il sera difficile de garantir leter-
minisme final d’une application.
De nombreux projets Open Source sont en
cours au sein de la communauté Linux afin
doptimiser les caractéristiques préemptives
du noyau. Le plus significatif reste le projet
“Preempt_RT”, initié par Ingo Molnar. Ce
patch préemptif apporte beaucoup de
modifications au
noyau, notamment en
ce qui concerne les
drivers de péripri-
ques.me si dans la
plupart des cas le patch
préemptif reste com-
patible avec les drivers
standard, les perfor-
mances et le fonction-
nement des riphé-
riques ne sont pas
garantis. Tous les an-
ciens drivers doivent
faire l’objet d’une
nouvelle validation
lors du passage à un
noyau préemptif, ainsi
qu’à chaque installa-
tion de nouveau ri-
phérique. L’approche
préemptive suscite
Les outils de veloppement
temps el se diversifient.
Les innieurs sysmes ont
maintenant le choix entre un
OS Linux et un OS spéciali
dans le temps el.
Il existe plusieurs thodes
pour fournir à Linux des
caractéristiques temps réel.
Linux présente l’avantage
d’un ct moindre
(pour de grandes séries) et
peut même convenir
pour les applications temps
eldur”.
Les RTOS continuent de
s’imposer sur le marché
des applications critiques.
L’essentiel
Automaticiens et roboticiens utilisent couramment des RTOS pour
leurs applications temps réel. Mais Linux aussi sait se montrer
déterministe, avec la possibilité d’utiliser des logiciels génériques.
MESURES 818 - OCTOBRE 2009 - www.mesures.com
32
S
olutions
MESURES 818 - OCTOBRE 2009 - www.mesures.com 33
S
olutions
Un sysme temps réel se définit par sa capaci à ecuter une che
dans un intervalle de temps donné. Cette caracristique est appelée
le déterminisme. Bien entendu, chaque application impose un temps
de réponse difrent, plus ou moins long selon les cas. Si certaines
peuvent se satisfaire d’un temps de ponse moyen, avec des valeurs
tantôt au-dessus et tantôt en dessous de la valeur annone, d’autres
ont absolument besoin d’une synchronisation fine. Elles ne peuvent
accepter aucun dépassement du temps de réponse, au risque de
clencher un plantage de tout le sysme. C’est pourquoi les applications
terministes se divisent en deux catégories : on distingue le traitement
temps eldur” du traitement temps réel “mou”.
Le temps réel “moufournit la garantie que le processeur garde
suffisamment de ressources disponibles pour effectuer une che
prioritaire dans un lai imparti. Typiquement, on optera pour
des systèmes d’exploitation ralistes tels que Linux pour répondre
à ce genre d’applications.
Avec le temps eldur”, à l’inverse, on cherche davantage à surveiller
le temps de ponse qu’à mesurer les ressources disponibles
dans le processeur. La critici concerne le temps que met le système
à pondre (ou réagir) à un événement. Concrètement : on ne doit jamais
manquer de traiter un événement ou une interruption. Ces besoins
en temps réel dur sont encore plus rigoureux lorsqu’il s’agit,
par exemple, d’un calculateur d’ABS automobile. Car aux besoins
en temps de ponse très courts s’ajoutent toutes les contraintes
liées à la sécurité du conducteur. Toutefois, le temps réel dur n’est pas
toujours sysmatiquement employé. C’est le cas, par exemple,
du traitement audio sur un ordinateur : pour le décodage d’une piste
sonore classique, échantillonnée à 44,1 kHz, le logiciel a besoin
de transrer 32 bits de dones vers le matériel toutes les 22,7 micro-
secondes ! Aucun système d’exploitation généraliste n’est capable
d’atteindre ces vitesses de traitement, d’autant que d’autres services,
qui s’exécutent en paralle, peuvent retarder le système et entraîner
des coupures dans le son. C’est pourquoi on utilise une moire
tampon pour compenser ces lais. En remplissant cette mémoire
seulement toutes les 0,1 seconde, on résout un problème de temps réel
dur mariel en utilisant un sysme d’exploitation temps el mou.
Toutes les applications dans les domaines de l’aérospatiale,
de la fense, du contle industriel, de l’instrumentation,
de la robotique et des télécoms demandent des temps de traitement
inrieurs à la microseconde et une priorisation des tâches.
Temps réel “duret temps réelmou” se font face
mode “kernel”. Contrairement aux OS
ralistes, ils n’incluaient aucun méca-
nisme d’abstraction pour faciliter les com-
munications entre l’OS et les ripriques.
Cela obligeait les veloppeurs à travailler au
plus près du mariel. Toutes les communi-
cations entre équipements devaient être
finies par le programme, avec le risque
d’erreurs que cela entraîne. Le temps de
débogage pouvait être ts long me pour
un développeur expérimen.
Heureusement, la puissance des processeurs
augmentant, les dernières générations de
RTOS disposent de mécanismes pour exécuter
des processus non critiques en parallèle des
tâches temps réel. On appelle ces processus
des modes utilisateur ou “user mode”. Le
développement de certaines applications
seffectue alors dans un environnement dif-
férent du mode kernel, et chacun des deux
noyaux utilise un secteur distinct de la
mémoire. Les applications ainsi créées -
ficient toujours des performances détermi-
nistes du RTOS, mais disposent d’une
moire pae pour exécuter toutes les
autresches annexes. Cela facilite le travail
des veloppeurs, qui n’utilisent qu’un seul
environnement de programmation.
La comparaison des performances
Avec les fonctions Preempt_RT disponibles
pour le noyau Linux, des niveaux de priori
peuvent être associés au traitement de
certaines interruptions. Mais les temps de
traitement restent sujets à variations. On
servera cette méthode à des applications
de contrôle fin, mais non critique. On parle
de temps el “mou”. Les cœurs temps réel
rendent possible, quant à eux, un traite-
cations pouvant être chares directement
dans le cœur temps el. Concrètement, il
faut utiliser un format identique à celui des
systèmes de fichiers et des pilotes de ri-
priques. Le ur temps el communique
directement avec le matériel. On parle
d’“ecution en mode kernel car lapplica-
tion temps réel s’exécute dans le noyau temps
réel comme s’il s’agissait dun driver.
Pour résumer, l’approche préemptive a
l’avantage de faire partie intégrante du
monde Linux, et convient bien au velop-
pement d’applications temps réel “mou”,
puisqu’elle ne peut pas garantir un ritable
terminisme. A l’inverse, mettre en place
un ur temps réel nécessite en quelque
sorte de “s’écarter du monde Linux” (ce
type de urs nest d’ailleurs pas supporté
par la licence GPL). Une approche non stan-
dard, donc, mais qui fournit lassurance dun
temps réel “dur” condition bien sûr
décrire les applications afin quelles s’exé-
cutent directement sur ce ur).
Le choix d’utiliser un RTOS
Ces deux approches tendent à apporter à
Linux les fonctionnalités temps réel qui lui
font faut. Mais bien entendu, il est possible
d’opter pour la solution inverse : ajouter à un
RTOS la capacité d’exécution de fonctions
non critiques.
L’architecture de base d’un RTOS comprend
un noyau temps el relié à un ordonnan-
ceur. Ce dernier finit l’ordre de traitement
des tâches en fonction de leur priori. Un
algorithme pemptif s’exécute en parallèle
afin de vérifier à chaque temps de cycle
qu’une nouvelle interruption critique ne
sest pasclenchée. Par ailleurs, contraire-
ment à un système d’exploitation néra-
liste, un RTOS n’utilise qu’un seul espace
mémoire pour exécuter et sauvegarder
toutes les ches (il n’y a pas de transferts de
données entre mémoire virtuelle et moire
physique).
Les RTOS se perfectionnent
Historiquement, les systèmes d’exploitation
temps réel ne traitaient les tâches qu’en
toutefois un grand intérêt. Le projet
“Preempt_RT” n’est plus considéré
aujourd’hui comme un projet annexe. Il fait
même partie des principaux projets. Un
grand nombre de développeurs de la com-
munauté Linux travaillent donc à aliorer
sa quali et sa maturi.
Rajouter un cœur temps réel
L’approche cœur temps réel consiste
quant à elle à rajouter un noyau déterministe
à côté du noyau Linux classique. Le ur
temps réel partage de la mémoire avec le
cœur Linux, et les deux communiquent par
le biais de files d’attente. Toutes les instruc-
tions sans exception passent par le noyau
temps el. Ce dernier renvoie toutes les ins-
tructions non critiques vers le noyau Linux
standard et se charge d’exécuter les autres.
Mais il n’envoie les tâches non critiques au
noyau Linux standard qu’après avoir traité
les tâches prioritaires. Principale différence
avec le noyau pemptif : puisque les appli-
cations critiques sont directement chares
dans le ur tempsel, elles ont un acs
privilégié aux péripriques dont elles ont
besoin. Leur performance d’exécution est
donc moins sujette à variation qu’avec un
noyau préemptif.
Contrairement au noyau préemptif dont
linstallation est relativement transparente, le
principe du cœur temps réel induit des
difrences avec le fonctionnement classique
de Linux, du fait du partage de lamoire
entre les deux cœurs. Les développeurs
doivent donc s’appliquer à écrire des appli-
Lorsqu’il s’agit de certifier du code embarq pour un secteur
critique (norme FDA 510k pour le médical, DO-178B pour
l’ronautique, ou encore IEC 61508 pour les applications de
curi), il paraît bien difficile d’ingrer des solutions telles
que des OS Linux. Comment prouver la sûreté de fonctionnement
d’un OS comptant autant de lignes de codes, autant de modules
qui interagissent tous les uns avec les autres ? La certification
ne se limite pas seulement à livrer le code source du système
d’exploitation, il faut pouvoir en expliquer chaque tail.
En ce qui concerne Linux, il n’y a aucune visibili sur les aspects
de quali du code, de par le principe même de la communau :
tout le monde peut rajouter des fonctions, mais à aucun moment
un document ne pourra attester de la validité du code. Pire :
on ne saurait me pas où s’adresser en cas de problème. Car
comme pour n’importe quel logiciel, un OS sans bug n’existe
pas. Le probme n’est pas que des bugs subsistent dans le code,
mais plut de savoir ils sont situés et ce qu’ils font.
Pour les applications critiques, il faut absolument éviter qu’un OS
ne plante sans crier gare ou ne mette le sysme dans un état
instable. Il est donc imratif d’oublier la notion d’Open Source et
de s’orienter vers les solutions certifiables proposées par certains
éditeurs. Ces OS peuvent être fournis avec des documents
de vérification et de validation, voire me avec des outils de
couverture de tests propres à une norme.
Toutefois, il reste possible d’intégrer un OS Linux à l’inrieur
d’une application critique en faisant appel à la virtualisation
(voir article Mesures n° 810, page 35). Rappelons que
la virtualisation consiste à faire tourner plusieurs OS ou applications
sur un seul et même système, en leur faisant croire qu’ils
s’exécutent sur des systèmes physiquement différents. Une fois
la plate-forme de virtualisation installée (entre la couche
marielle et l’OS), Linux peut tourner en paralle de Windows,
d’un RTOS ou même d’applications Java, Ada, etc. De plus,
les outils de virtualisation sont tous légers, ce qui facilite leur
certification (car ce sont eux les garants de la sûreté de fonction-
nement du système). A noter bien sûr que ces deux dernres
solutions ont un ct non gligeable. Que l’on opte pour
une solution Linux proprtaire ou pour un hyperviseur, on
s’éloigne fortement du modèle “gratuitdes OS Linux. Et il reste
encore à programmer et à certifier l’application proprement dite.
Linux n’est pas adapté aux applications certifiées
Architecture
Linux standard
Linux +
ur temps réel
Architecture optimisée avec mode kernel
et mode utilisateur
Comme tous les systèmes d’exploitation généralistes, Linux
standard forme une couche d’abstraction au-dessus du matériel.
Le c
œ
ur temps réel prend complètement la main sur le système. Il traite
directement les tâches critiques et envoie toutes les autres au noyau Linux.
Les architectures les plus récentes placent une couche d’abstraction au-dessus du c
œ
ur temps réel. Ceci afin
de pouvoir développer des applications sans forcément maîtriser les langages de bas niveau.
MESURES 818 - OCTOBRE 2009 - www.mesures.com
34
S
olutions
ment rapide et ritablement terministe
de certaines interruptions. Les autres ches,
non prioritaires, sont traies par le noyau
Linux comme des processus classiques. Cette
méthode présente l’avantage de la paration
de la moire. En revanche, ces solutions
sont propriétaires.
A l’inverse, dans un RTOS, véritable outil
industriel, tout est pensé dans le sens des
performances temps el. Dans le secteur de
l’électronique embarquée, la quantité de
mémoire est toujours dimensionnée au plus
juste. L’empreinte mémoire de l’OS joue
donc également un rôle dans le choix entre
un OS Linux et un RTOS qui occupera moins
despace qu’un Linux avec ur temps el.
Ajoutons à cela que les RTOS bénéficient
pour la plupart de dizaines d’années d’utili-
sation, durant lesquelles ils ont été amélios
et optimisés par leurs éditeurs.
A l’inverse, Linux, bien que supporté par une
communauté, manque encore de maturité
pour l’embarqué. Sans compter que les RTOS
sont plus facilement certifiables pour les
applications militaires et ronautiques, qui
doivent pondre à des normes très strictes.
La taille du système d’exploitation Linux,
inadaptée au monde de l’embarqué, le rend
plus difficile et surtout plus coûteux à
certifier.
Le choix entre Linux et RTOS revient donc
en quelque sorte à déterminer si une appli-
cation est plutôt orientée “tâches critiques
ou “tâches annexes (affichage, calcul sur
des données, sauvegardes, etc.). Il faut
trouver un compromis entre les deux critères
principaux que sont l’indépendance que
lon souhaite conserver entre les difrentes
ches d’une application, et les besoins en
communication entre ces tâches.
Restent quelques aspects à prendre en
considération avant d’arter son choix entre
un RTOS et Linux temps el, tels que la dis-
ponibili des logiciels tiers utiles à l’appli-
cation. Si des logiciels génériques sont
nécessaires, on optera plus volontiers pour
Linux. Autre point licat : les coûts globaux
de maintenance et de mise à jour, qui ne sont
pas clairement identifiables avec les logiciels
libres. L’amortissement d’une solution
propriétaire sera donc plus facile à calculer.
Et enfin, il faut bien sûr s’assurer de la
disponibilité d’une solution Linux ou RTOS
pour la plate-forme marielle consie.
Frédéric Parisot
d’après Hans Juergen Rauscher,
architecte système chez Wind River
On mesure le déterminisme d’un sysme d’exploitation par son temps de réponse à une
interruption, aussi appetemps de latence”. Il s’agit du temps que met le noyau du système
d’exploitation avant de pondre à un évènement. Cela inclut le temps de sauvegarder la che
en cours, de déterminer la provenance de l’interruption et d’effectuer le traitement proprement
dit. Rappelons qu’un sysme d’exploitation contient un tableau de fonctions, appehandler
d’interruptions”, qui associe à chaque interruption ou séquence d’interruptions une action
à effectuer. Mais avec la plupart des applications temps réel, avant que le système ne réponde
à une interruption, il lui faut juger de l’importance de cette dernière et la comparer avec les
traitements en cours. C’est pourquoi l’on a besoin d’une gestion des prioris entre les ches.
Le fait d’effectuer ce contrôle de priorité avant de traiter une tâche induit forcément des temps
de latence supplémentaires. Il y a surtout le temps cessaire pour identifier le niveau de priori.
C’est le même principe que l’on retrouve dans un commutateur Ethernet, qui doit analyser l’entête
de la trame avant de la traiter. A cela s’ajoutent forment le temps de la comparaison entre
les deux degs de priorité, celui de la tâche en cours et celui de la tâche en attente. La latence totale
d’un sysme est donc la somme de ces trois temps : le temps d’identification du niveau de
priori, le temps de comparaison avec la che en cours et le temps de traitement de l’interruption.
Quelques notions de temps réel
Avec la méthode du noyau préemptif, une certaine variabilité subsiste dans les temps de latence.
Une bonne illustration de ce que l’on appelle le temps réel mou.
A l’inverse, la méthode du c
œ
ur temps réel présente à la fois un seuil minimum très bas
pour les temps de réponse et une faible variabilité. On peut alors parler de temps réel dur.
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !