SYSTEMES TEMPS REELS (annexes)

Transcription

SYSTEMES TEMPS REELS (annexes)
SYSTEMES TEMPS REELS
(annexes)
Non classifié
Novembre 1999
Systèmes temps réels
2
Table des matières
ANNEXE 1 - CONCEPTS DE BASE DU TEMPS RÉEL.........................................................................................................4
1.
2.
3.
4.
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
QU'EST CE QUE LE TEMPS RÉEL ? ..........................................................................................................................................4
QUELLE EST LA RELATION ENTRE LE SYSTÈME D 'EXPLOITATION ET LE TEMPS RÉEL ?.................................................5
LES EXTENSIONS POSIX TEMPS RÉEL.................................................................................................................................5
LES SERVICES DE BASES D'UN SYSTÈME TEMPS RÉEL ..........................................................................................................7
TÂCHES .................................................................................................................................................................................7
BOÎTES AUX LETTRES..........................................................................................................................................................9
EVÉNEMENTS.......................................................................................................................................................................9
SÉMAPHORES......................................................................................................................................................................10
INTERRUPTIONS .................................................................................................................................................................10
TIMERS OU CHRONOMÈTRE ...............................................................................................................................................10
ANNEXE 2 - PRÉSENTATION DU SYSTÈME TEMPS RÉEL VXWORKS ................................................................ 11
1.
2.
3.
4.
PRÉSENTATION .......................................................................................................................................................................11
CARACTÉRISTIQUES TEMPS RÉEL.........................................................................................................................................12
INTERFACE AVEC UNIX.........................................................................................................................................................15
A UTRES PARTICULARITÉS .....................................................................................................................................................16
ANNEXE 3 - PRÉSENTATION DE RTC.................................................................................................................................. 18
1.
2.
3.
PRÉSENTATION .......................................................................................................................................................................18
PRIMITIVES ET FONCTIONS TEMPS RÉEL ..............................................................................................................................18
A UTRES CARACTÉRISTIQUES ................................................................................................................................................21
SIGLES ET TERMINOLOGIE :.................................................................................................................................................. 22
SIGLES GÉNÉRAUX :.........................................................................................................................................................................22
TERMINOLOGIE :...............................................................................................................................................................................23
BIBLIOGRAPHIE :.......................................................................................................................................................................... 24
SITES INTERNET :..............................................................................................................................................................................24
GLOSSAIRE :.................................................................................................................................................................................... 25
Non classifié
Novembre 1999
Systèmes temps réels
3
Liste des figures
Figure 1 - Interface POSIX d'un système d'exploitation...................................................................... 6
Figure 2 - Round Robin entre tâches de même priorité ....................................................................... 7
Figure 3 - Ordonnancement en tourniquet ........................................................................................... 8
Figure 4 - Exemple de changement de contexte dans un système temps réel...................................... 8
Figure 5 - Etats possibles des tâches .................................................................................................... 9
Figure 6 - Architecture globale de VxWorks..................................................................................... 11
Figure 7 - Structure du noyau WIND................................................................................................. 12
Figure 8 - Diagramme d'états des tâches sous VxWorks ................................................................... 12
Figure 9 - Environnement de communication de VxWorks .............................................................. 15
Figure 10 - L'environnement Tornado ............................................................................................... 17
Figure 11 - Diagramme d'états des tâches sous RTC ......................................................................... 18
Non classifié
Novembre 1999
Systèmes temps réels
4
Annexe 1 - Concepts de base du Temps Réel
1. Qu'est ce que le Temps Réel ?
"Un système Temps Réel est un système d'informations dont les corrections ne dépendent pas
uniquement du résultat logique des algorithmes mais aussi de l'instant où ces résultats ont été
produits" .
Un système temps réel est un système où le temps intervient dans la validité du programme :
ë Possibilité de réagir en un temps adapté aux événements externes ;
ë Possibilité de fonctionnement en continu sans réduire le débit du flot d'informations traitées ;
ë Temps de calcul connus et modélisables pour permettre l'analyse de la réactivité.
D'après cette définition, un système Temps Réel n'a pas besoin d'être rapide. Par exemple : le
système de guidage d'un navire peut apparaître comme n'étant pas un système Temps Réel, à
cause de sa faible vitesse et qu'habituellement il y a "assez" de temps (en minutes) pour prendre
une décision avant d'agir. Néanmoins, c'est effectivement un système temps réel.
Le problème de Temps Réel apparaît quand le système est constitués de plusieurs tâches et qu'il
est nécessaire de diviser la puissance du ou des processeurs entre elles. Ceci exclut toute
utilisation d'un système à temps partagé (Unix, Windows).
La conception d'un Système Temps Réel passe par plusieurs phases : Premièrement, on identifie
la tâche à réaliser et les contraintes temporelles qui doivent être satisfaites. Deuxièmement, le
code est écrit. Finalement, le temps d'exécution de chaque tâche est mesuré et un test de rendezvous horaire est réalisé pour vérifier qu'aucune tâche ne dépassera son temps limite pendant le
fonctionnement du système. Le test de rendez-vous horaire consiste à appliquer un certain
nombre de tests à l'ensemble des tâches. Si elles passent ces tests, il sera alors possible de
garantir qu'aucun temps limite ne sera dépassé. Si au contraire les tests ne sont pas concluants, il
est nécessaire de reprendre la conception depuis le début, en choisissant un processeur plus
rapide (si cela est possible) ou en utilisant d'autres algorithmes pour implémenter les tâches.
En résumé :
Les tâches peuvent être identifiées par trois valeurs de temps :
ë Période de la tâche ;
ë Temps limite pour la tâche ;
ë Temps de calcul maximal pour la tâche.
La raison d'être du système est de garantir que toutes les tâches (dans toutes leurs configurations
d'exécution) satisferont les temps limites. Pour garantir les temps d'exécution, le système doit
être prévisible. Dire qu'un système est Temps Réel ou que ce système est prévisible est
pratiquement la même chose.
Non classifié
Novembre 1999
Systèmes temps réels
5
2. Quelle est la relation entre le système d'exploitation et le Temps Réel ?
La correction sémantique de la réponse est de la responsabilité du programmeur, la correction
temporelle dépend du système d'exploitation.
Le système doit supporter et organiser l'exécution de toutes les tâches. Le système doit
également gérer toutes les interruptions.
Il doit offrir :
ë L'algorithme de prévision
ë Les mécanismes de communication inter-processus (sémaphores, messages, etc.)
ë Gérer les interruptions.
ë Activer tâches à chacune de leur période.
Contrairement aux systèmes d'exploitation standards, le but d'un système d'exploitation temps
réel est de minimiser la complexité. Il n'est pas nécessaire d'avoir un système d'exploitation
ayant beaucoup de possibilités mais un système capable d'exécuter les tâches telles que prévues
et rapidement.
Il est préférable d'avoir un système d'exploitation qui prend normalement 10 unités de temps
pour accomplir un changement de contexte et qui en prend 12 dans les pires cas, qu'un autre
système qui en moyenne prend 3 unités de temps mais qui de temps en temps peut aller jusqu'à
20.
On ne sera surpris de découvrir que les systèmes temps réel sont "plus lents" que les normaux.
Dans certain cas, afin d'avoir des comportements prévisibles, il pourra même être nécessaire de
désactiver la mémoire cache avec la perte de performances associées. La mémoire cache, les
processeurs avec des unités pipelines et les algorithmes de prédiction de sauts sont des ennemis
clairement désignés de la prévisibilité et par conséquent des Systèmes Temps Réel.
3. Les Extensions POSIX Temps Réel.
POSIX sont les initiales de "Portable Operating System Interface" (Interface Portable pour
Systèmes d'Exploitation). C'est un standard qui tend à obtenir la portabilité des logiciels aux
niveau du code source.
En d'autres termes, un programme destiné à un système d'exploitation et respectant le standard
POSIX devrait se compiler et s'exécuter sous n'importe quel système POSIX, même s'il provient
d'un fabricant différent. Le standard POSIX définit l'interface que le système d'exploitation doit
offrir aux applications : le jeux d'appels système. POSIX est développé par l'IEEE (Institute of
Electrical and Electronic Engineering) et standardisé par ANSI (American National Standards
Institute) et ISO (International Standards Organisation). Evidemment, POSIX est basé sur
UNIX. La majorité des systèmes d'exploitation (y compris Windows NT) tendent à être
compatibles POSIX aux travers de leurs différentes versions.
Non classifié
Novembre 1999
Systèmes temps réels
6
application 1
application 2
appels systèmes
(POSIX)
Système
d'exploitation
Drivers
Interruptions et Entrées/Sorties
Matériel (Hardware)
Figure 1 - Interface POSIX d'un système d'exploitation
Le travail sur la définition POSIX est divisé en plusieurs groupes de travail qui comptent dans
leur rang des fabricants d'ordinateurs, des éditeurs de logiciel, des fonctionnaires et des
spécialistes en informatique. Chaque groupe se charge de concevoir un aspect du système
d'exploitation. Par exemple, le groupe nommé POSIX.4 s'occupe des aspects temps réel.
Les extensions POSIX.4 -- renommées 1003.1b depuis 1993 -- autorisent l'usage d'un système
d'exploitation dans des situations temps réel.
Bien sûr, la grande majorité de ces extensions traitent de la gestion du temps et des priorités des
processus. Il existe aussi des appels systèmes pour faciliter la communication inter-processus.
Les extensions POSIX sont conçues pour améliorer le contrôle de la gestion des ressources de
systèmes d'exploitation.
Non classifié
Novembre 1999
Systèmes temps réels
7
4. Les services de bases d'un système temps réel
Ce paragraphe présente les services de base que fournissent en général les systèmes temps réel.
4.1. Tâches
Une tâche, définie par son identificateur, comporte un contexte permettant à tout instant de
connaître son état et ainsi de pouvoir arrêter/redémarrer son exécution sur le processeur.
Une tâche est représentée par une procédure avec un nom et un ensemble de routines.
procedure task2
begin
loop
traitements
en loop
end;
procedure task2
begin
loop
traitements
end loop
end;
Dans un environnement monoprocesseur, on dit qu'une tâche a le processeur.
Notions de priorités pour les tâches :
Si task1 a une priorité inférieure à task2, s'il y a uniquement ces deux tâches et si ces tâches
n'effectuent aucune opération bloquante, la tâche task2 s'exécutera toujours et la tâche task1
jamais.
Pour un même niveau de priorité, l'exécution des tâches s'effectue selon un partage de
temps (Round Robin, "à tour de rôle" ou en tourniquet 1 ), appelé ordonnancement des
tâches.
task1
task2
temps
Figure 2 - Round Robin entre tâches de même priorité
Chaque tâche s'exécute dans un intervalle de temps et laisse la place à la prochaine tâche
prête.
L'ordonnancement Round Robin est un ordonnancement préemptif.
1
cette technique est également connue sous le nom d'ordonnancement circulaire
Non classifié
Novembre 1999
Systèmes temps réels
8
tâche prête
tâche bloquée
tâche active
Ordonnanceur
PROCESSEUR
Figure 3 - Ordonnancement en tourniquet
Pour la gestion du temps, il existe la notion de ticks d'horloge (souvent représenté par une
interruption de l'horloge du système). Dans la plupart des systèmes temps réel, un tick
représente une période de 10 ms. A l'arrivée d'un tick, le système temps réel effectue un
changement de contexte pour laisser le processeur à une tâche prioritaire en attente
(préemptif) ou à une autre tâche de priorité égale (Round Robin).
quelques µs
Tâche k
Tick horloge
Tâche i
Début tick
Décision switch
Fin tick
Temps
Changement de contexte
Vérification si la tâche en cours a une priorité plus forte par rapport
aux autres tâches en attente (préemptif)
Si priorité égale alors Round Robin
Figure 4 - Exemple de changement de contexte dans un système temps réel
Non classifié
Novembre 1999
Systèmes temps réels
9
File FIFO
Changement
de contexte
Occupation
du processeur
En attente
de processeur
Tâches éligibles
Tâche élue
Insertion au
bon endroit
de la file
Tâches suspendues
Figure 5 - Etats possibles des tâches
4.2. Boîtes aux lettres
Service permettant d'envoyer (send) et de recevoir (receive) des messages.
La tâche en attente d'une lettre est suspendue jusqu'à l'arrivée de cette dernière.
Il faut cependant à veiller à affecter une priorité plus élevée à la tâche qui effectue la
réception, par rapport à la tâche qui réalise l'envoi.
La profondeur de la boîte aux lettres est souvent paramétrable. Certains systèmes temps réel
acceptent un timeout pour les fonctions d'envoi et de réception.
4.3. Evénements
Le principe des événements est similaire à celui des boîtes aux lettres, à la différence près
qu'au lieu de recevoir ou d'envoyer des données (un lettre), un signal est émis ou attendu.
La signalisation entre deux tâches nécessite une opération dans chacune des tâches :
ë attente de l'événement dans l'une,
ë positionnement de l'événement dans l'autre.
Une tâche peut attendre successivement à des instants différents de son exécution des
événements différents. Un événements peut être signalé par plusieurs tâches.
Un événement est spécifique à la tâche susceptible de l'attendre. Tout événement est donc
associé à une tâche.
Non classifié
Novembre 1999
Systèmes temps réels
10
4.4. Sémaphores
Les sémaphores utilisés avec les systèmes temps réel servent à partager une ressource entre
plusieurs tâches (création d'une section critique).
Les sémaphores servent également à synchroniser plusieurs tâches entre elles.
Le sémaphore (Dijkstra) est un objet sur lequel seulement deux opérations sont possibles :
P(s) et V(s), toutes les deux opérations sont atomiques.
Un sémaphore possède une valeur entière, définie entre 2 opérations.
P(s) : si la valeur de s est inférieure ou égale à 0, la tâche appelante est bloquée, sinon la
valeur de s est décrémentée.
V(s) : s'il y a une tâche bloquée sur s, celle-ci est débloquée, sinon la valeur de s est
incrémentée.
P est une barrière et V un laissez-passer2 .
4.5. Interruptions
Les interruptions permettent de prendre en compte des événements au processeur
(asynchrones).
La prise en compte d'une interruption provoque l'arrêt du programme en cours et l'exécution
d'un programme associé à cette interruption.
Certains systèmes temps réel fournissent des fonctions permettant de lier les interruptions
avec une fonction particulière du logiciel (routine d'interruption).
La routine d'interruption ne doit en aucun cas appeler une fonction bloquante.
4.6. Timers ou chronomètre
Ces services permettent de réaliser des traitements cycliques ou de détecter des
dépassements dans les réceptions de données par exemple.
Comme pour les interruptions, il ne faut pas réaliser d'opérations bloquantes dans les
fonctions appelées par les timers.
2
Passeren, Vrygeven (hollandais) = Prendre et libérer.
Non classifié
Novembre 1999
Systèmes temps réels
11
Annexe 2 - Présentation du système temps réel VxWorks
1. Présentation
L'exécutif VxWorks de Wind River Systems est le premier système à intégrer le développement
croisé (cross-development) à partir d'une station UNIX (et depuis peu à partir d'une station sous
Windows).
Le développement sous un environnement de type UNIX offre la richesse d'utilitaires, de
possibilités réseaux et de convivialité de développement.
Les raisons qui permettent de justifier
(VxWorks/UNIX) sont les suivantes :
l'utilisation
deux
systèmes
d'exploitation
ë la première est qu'UNIX n'est pas en mesure d'offrir des outils adaptés au temps réel et en
conséquence de répondre à des critères de performances temps réel ;
ë la deuxième, est que l'architecture fortement optimisée des systèmes d'exploitation temps
réel ne facilite pas forcément leur utilisation en tant que plate-forme de développement.
VxWorks est donc au sens strict un exécutif temps réel, spécialement conçu pour le
développement en environnement UNIX. La figure ci-dessous présente l'architecture globale de
VxWorks.
Outils de développement hôte
Connexion Hôte/Cible
Outils de développement cible
Sous-système réseau
Sous-système Entrées/Sorties
Système d'exploitation
micro-noyau
WIND
Système évolutif
Figure 6 - Architecture globale de VxWorks
Tout comme beaucoup d'autres exécutifs de ce type, UNIX est vu tel un ensemble logiciel de
haut niveau pour le développement des applications, exécutées et mises au point sous VxWorks.
Le noyau (WIND) de ce dernier offre des primitives de base de gestion de processus et de
Non classifié
Novembre 1999
Systèmes temps réels
12
sémaphores sur lesquelles sont construites les fonctions systèmes accessibles par l'intermédiaire
du système d'exploitation.
Traitement des
interruptions
Gestion
des tâches
Horloge
Système
Sémaphores
Communication
Inter-tâches
Gestion
mémoire
Figure 7 - Structure du noyau WIND
VxWorks est compatible de l'interface POSIX 1003.1b (également connu sous le standard
1003.4) défini par l'IEEE (Institute of Electrical and Electronics Engineers). Cela facilite le
portage vers d'autres systèmes conformes à ce standard.
2. Caractéristiques temps réel
L'ordonnancement des tâches est basé sur le principe de priorité (256 niveaux possibles) avec
préemption. Pour des tâches de priorités identiques, c'est la technique du round-robin qui est
mise en œuvre. Le temps de commutation de contexte est indépendant du nombre de tâches
installées dans le système ; à titre indicatif, sur un 68020 à 25 MHz, il est de 17 µ s.
en attente
prête
retardée
suspendue
Figure 8 - Diagramme d'états des tâches sous VxWorks
La synchronisation est assurée par signaux, les fonctionnalités étant basées sur les primitives de
gestion de sémaphores. VxWorks supporte trois types de sémaphores : les sémaphores
Non classifié
Novembre 1999
Systèmes temps réels
13
booléens , à compteur et à priorité. Ces derniers permettent de contourner l'effet subversif des
priorités relatives des tâches. En effet, une tâche de faible priorité sera susceptible d'hériter
momentanément de la priorité de la tâche de plus forte priorité en attente sur le sémaphore. Les
trois types de sémaphores acceptent des attentes avec timeout et autorisent le chaînage des
processus dans les files de type FIFO ou à priorité.
Du point de vue de la communication, l'exécutif intègre des outils de haut niveau bâtis à partir
des primitives de gestion de sémaphores. On dispose de :
-
files de messages, de type FIFO, de longueur variable et accessibles à partir de tout
processus utilisateur ou système, y compris une routine de service d'interruption ;
tubes de communication (pipe), faisant office d'interface entre un processus et une file de
message avec l'avantage d'utiliser des services d'entrées-sorties indépendant du matériel
(fonction de gestion de périphériques virtuels).
Lors de l'arrivée d'une interruption, une routine ISR (Interrupt Service Routine) est invoquée,
l'exécutif n'intervenant pratiquement pas entre l'arrivée du phénomène d'interruption et
l'exécution de la routine ISR. Les routines ISR peuvent, si besoin est, envoyer des signaux,
manipuler des sémaphores, des files de messages ou des pipes.
Par ailleurs, VxWorks dispose de fonctionnalités autorisant la manipulation des vecteurs
d'interruptions directement en langage de haut niveau tel que le langage C ainsi que l'association
d'une routine écrite en C à une source d'interruption matérielle.
A propos du masquage des interruptions et de la préemption, VxWorks minimise les temps de
fonctionnement en "mode système", mode dans lequel généralement tout exécutif est non
préemptible (et au pire, non interruptible) pour assurer l'intégrité de manipulation des ressources
du noyau (files internes, pointeurs, etc…) de telle sorte que le temps de latence en interruption
se réduit à 8 µs.
Le fonctionnement en mode "système" ne concerne que les manipulations vitales de gestion du
multitâche et les opérations de base de synchronisation.
Les fonctionnalités de communication, de gestion mémoire, de gestion multiprocesseurs (par
réseaux) sont essentiellement exécutées en mode "utilisateur" (c'est à dire dans le contexte du
processus concerné), et sont donc préemptible.
Non classifié
Novembre 1999
Systèmes temps réels
14
Le tableau ci-dessous résume les performances temporelles de VxWorks pour un processeur
68020 à 25 MHz.
Mesures
VxWorks
68020 / 25 MHz
Commutation de contexte
17 µs
Commutation de tâches
35 µs
Opérations sur sémaphores
(Prendre/Rendre)
8 µs
Latence à la préemption
11 µs
Latence en interruption
8 µs
Outre les caractéristiques précitées, VxWorks intègre une bibliothèque de gestion du temps
incluant des "chiens de garde" (watchdog), des compteurs de temps (timer) de délai sur
processus, des possibilités de timeout sur opérations du noyau, etc…
De même, l'exécutif dispose d'une agence de gestion mémoire supportant les fonctions
d'allocation et de désallocation compatibles C ANSI et UNIX.
Le tableau ci-dessous présente les principales fonctions ("primitives") de VxWorks :
Nom de la
librairie
taskLib
semLib
intLib
Non classifié
Nom de fonction
Description
taskSpawn
Création d'une tâche
taskSuspend
Suspension d'une tâche
taskResume
Reprise d'une tâche
taskLock
Verrouillage d'une tâche
taskUnLock
Déverrouillage d'une tâche
taskDelete
Destruction d'une tâche
semBCreate
semCCreate
semMCreate
Création d'un sémaphore (binaire, compteur,
exclusion mutuelle)
semTake
Prise d'un sémaphore
semGive
Libération d'un sémaphore
semDelete
Destruction d'un sémaphore
intConnect
Connecter une routine à une interruption
intLevelSet
Positionner le masque d'interruption
intLock
Bloquer les interruptions
intUnLock
Débloquer les interruptions
Novembre 1999
Systèmes temps réels
memLib
msgQLib
15
malloc
Allouer un bloc mémoire
free
Libérer un bloc mémoire
memShow
Afficher la mémoire disponible
msgQCreate
Créer une file de message
msgQSend
Envoyer un message
msgQReceive
Recevoir un message
msgQDelete
Détruire une file de message
3. Interface avec UNIX
L'une des caractéristiques de VxWorks est de s'intégrer pleinement dans un environnement de
développement de type UNIX, et de faire partie de cette nouvelle génération d'exécutifs basés
sur ce quasi standard de développement.
Qui dit environnement UNIX, sous-entend généralement une machine cible, une machine hôte
et un réseau, donc le support de toute une série d'utilitaires standard de communication par
réseaux. Le schéma ci-dessous présente les différents utilitaires de communication réseaux
supportés par VxWorks.
Systèmes de fichiers
Connexion
rlogin
telnet
rsh
X11
ftp
tftp
NFS
Remote
Debug
RPC
Sockets
TCP
UDP
IP
Ethernet
Bus système
SLIP
…
Liaison série
Figure 9 - Environnement de communication de VxWorks
Non classifié
Novembre 1999
Systèmes temps réels
16
Les sockets sont des primitives de communication à la base du développement d'utilitaires
réseau ou d'applications. VxWorks supporte des connexions en mode datagramme (par
l'intermédiaire de UDP/IP) et en mode connecté (grâce à TCP/IP), ce dernier mode autorisant un
contrôle de bout en bout du flot de données transmis.
Le protocole RPC (Remote Procedure Call) assure l'appel par les tâches VxWorks ou les
processus UNIX de routines exécutées indifféremment par la machine cible (VxWorks) ou hôte
(UNIX).
Le rôle des différents process sont :
ë rsh : remote shell, permet aux processus applicatifs sous VxWorks d'accéder par réseau aux
commandes UNIX ;
ë ftp : file transfert protocol, autorise l'accès à partir du système VxWorks aux fichiers du
système UNIX et inversement ;
ë telnet assure la connexion au shell VxWorks à partir de la machine UNIX, de même que
rlogin assure aux utilisateurs de la cible (VxWorks) une connexion au shell de la machine
hôte (UNIX).
4. Autres particularités
Outre les facilités d'accès à l'environnement UNIX, VxWorks dispose d'une bibliothèque de
gestion des entrées/sorties compatible UNIX au niveau source. Les appels "systèmes" bufférisés
ou non, formatés ou non restent les mêmes. Cette bibliothèque constitue une interface
indépendante du matériel, incluant la gestion des circuits séries orientés caractères (terminaux,
lignes de communications), des disques à accès aléatoire, des circuits virtuels (pipe et sockets),
des circuits parallèles (convertisseurs analogique/digital), des circuits "réseau" pour l'accès de
fichier à distance.
L'exécutif VxWorks peut être fourni avec un environnement intégré pour le développement de
logiciel croisé. Cet environnement est appelé Tornado et fournit les outils suivants :
ë laucher : outil intégré de gestion de cibles ;
ë browser : une collection d'outils permettant de consulter la cible ;
ë CrossWind : un outil de "deboguage" graphique ;
ë WindSh : une console permettant de contrôler la cible ;
ë WindConfig : un outil graphique permettant de configurer l'exécutif VxWorks.
Non classifié
Novembre 1999
Systèmes temps réels
17
Tornado
launcher
Ethernet
browser
CrossWind
Serveur
cible
Emulateur
Exécutif
VxWorks
WindSh
WindConfig
Outils hôte
Liaison série
connexion
Système cible
Figure 10 - L'environnement Tornado
L'environnement Tornado peut être complété avec d'autres produits optionnels tels que :
ë VxGDB, un débogueur multi-tâches symbolique fonctionnant avec Ethernet, ligne série ou
dans l'environnement intégré de l'émulateur HP64700 ;
ë VxSim, un simulateur de la cible VxWorks sur une station UNIX ;
ë WindView, un outil de visualisation graphique permettant d'étudier le déroulement d'une
application temps réel par ses événements et leur "timing" associé, dynamiquement ou en
post-mortem ;
ë Stethoscope, un outil de visualisation graphique permettant d'analyser dynamiquement le
déroulement des applications temps réel. L'information sélectionnée peut être enregistrée
dans un fichier au format MATLAB ou MATRIX X.
Non classifié
Novembre 1999
Systèmes temps réels
18
Annexe 3 - Présentation de RTC
1. Présentation
La société Tecsi est devenue depuis plus de 15 ans un spécialiste de référence dans le domaine
des logiciels embarqués. Cette expérience a été en particulier investie dans sa propre gamme de
noyaux temps réel RealTime Craft (RTC).
Le noyau RealTime Craft présente plusieurs avantages : compact, limité aux fonctions de
gestion de tâches, avec des temps de traitement performant.
2. Primitives et fonctions temps réel
Le diagramme d'état des tâches sous RTC ci-dessous permet de distinguer quatre états pour une
tâche :
ë non opérationnelle (ou hors service) ;
ë en attente (de la réalisation d'une condition) ;
ë prête ;
ë en cours
non opérationnelle
Arreter tâche
"StopTask"
Démarrer tâche
"StartTask"
Terminer la tâche
en cours
"Terminate"
Arreter tâche
"StopTask"
prêt
Sélection par
l'ordonnanceur
occurrence
de la condition
Préemption par
l'ordonnanceur
en cours
en attente
attente
d'une condition
Figure 11 - Diagramme d'états des tâches sous RTC
La priorité des tâches est gérée de façon classique : RTC définit 6 niveaux de priorité croissante
de 0 à 5, à chaque niveau étant associé une file de tâches prêtes, le niveau 0 étant réservé à la
tâche de fond. L'aspect déterministe est mesuré par le fait que c'est la tâche de priorité la plus
élevée qui est exécutée (passage à l'état "en cours").
Non classifié
Novembre 1999
Systèmes temps réels
19
RTC fournit 27 primitives de gestion des tâches :
Nom de la primitive
Description
1
InitTask
initialisation d'une tâche
2
StartTask
démarrer une tâche
3
CurrentTask
obtenir l'identification de la tâche en cours
4
TaskState
obtenir l'état d'une tâche
5
StopTask
arrêter une tâche
6
ForceExeptionHandler imposer qu'une tâche soit déroutée vers un traitement particulier
7
Terminate
terminer une tâche : la tâche passe dans l'état non opérationnel
8
EnterRegion
entrée en région critique
9
LeaveRegion
sortie de région critique
10 ChangePriority
changer la priorité d'une tâche
11 TaskPriority
obtenir la priorité d'une tâche
12 InitSemaphore
initialisation d'un sémaphore
13 V
vendre une unité de sémaphore
14 P
prendre une unité de sémaphore
15 TestP
tester et prendre une unité de sémaphore
16 PWithPrio
prendre une unité de sémaphore, mettre la tâche devant les tâches
de priorité plus faible
17 InitMailbox
initialiser une boîte aux lettres
18 Send
envoyer un message dans une boîte aux lettres
19 SendWithPrio
envoyer un message avec priorité
20 Receive
attendre un message dans une boîte aux lettres
21 TestReceive
tester si un message est disponible et l'obtenir
22 SignalEvent
signaler un événement
23 WaitEvents
attendre la réalisation d'un événement
24 EventsOccured
tester si les événements se sont produits
25 ClearEvents
réinitialiser les indicateurs d'événements
26 StartDelay
armer un temporisateur
27 StopDelay
annuler les effets de l'opération StartDelay
RTC fournit quatre primitives de gestion des événements (primitives 22 à 25). Pour les
mécanismes de communications (primitives 17 à 21), il convient de noter la présence d'une
fonction autorisant le test de la disponibilité d'un message avant consommation effective de
celui-ci (TestReceive). Les fonctions de communications sont exclusivement implémentées sous
forme d'un mécanisme classique de boîtes aux lettres.
Non classifié
Novembre 1999
Systèmes temps réels
20
La gestion des exceptions est assurée grâce à la primitive ForceExceptionHandler.
Du côté synchronisation, les cinq fonctions de gestion de sémaphores (primitives 12 à 16)
comportent les traditionnelles opérations P et V (Prendre et Vendre) des sémaphores à
compteur, avec une fonction supplémentaire, PWithPrio, qui permet de mettre en attente les
tâches de priorités plus faible.
Les fonctions de synchronisation entre tâches (au nombre de quatre) correspondent aux
opérations sur sémaphore à compteur ou sur événements (1 parmi 16 possibles).
Malgré les fonctions d'horlogerie réduites (demande d'exécution d'un traitement déterminé après
un délai et annulation du délai), il est important de noter que toutes les fonctions susceptibles de
provoquer une attente (WaitEvents, P, PWithPrio, Receive) peuvent être associées à une
temporisation, afin de prévenir des éventuels problèmes de deadlock.
Le tableau ci-dessous résume les temps d'exécution principaux des primitives pour un
processeur 68000 à 8 MHz sans attehte mémoire. Les mesures sont réalisées sur une application
comportant au moins 8 tâches réparties sur 8 niveaux de priorité [RTC87][DOR91].
Mesures
RTC
sur 68000
StartTask : sans préemption
68 µs
Send : aucune tâche n'attendait le message
56 µs
Send : avec préemption
86 µs
Receive : message disponible
46 µs
Receive : avec mis en attente
78-110 µs
StartDelay
33 µs
EnterRegion
19 µs
SignalEvent : aucune tâche n'attendait l'événement
34 µs
SignalEvent : une tâche en attente
64 µs
SignalEvent : avec préemption
75 µs
WaitEvents : événement déjà arrivé
24 µs
WaitEvents : avec mise en attente de la tâche
63-95 µs
Terminate
55-87 µs
Il est important de noter que ces temps ne sont dépendants que du nombre de niveaux de
priorité et non du nombre de tâches présentes dans le système. Par ailleurs, dans le cas "avec
préemption", l'exécution de la primitive inclut le changement de contexte.
Non classifié
Novembre 1999
Systèmes temps réels
21
3. Autres caractéristiques
A propos du mécanisme de gestion des interruptions, lorsque ces dernières ne sont pas
masquées, il y a exécution d'une séquence de code immédiate. Ces séquences immédiates
s'exécutent dans l'environnement de la tâche en cours comme si cette dernière avait réalisé un
simple appel de procédure. Le résultat de l'exécution d'une séquence immédiate peut concerner
la tâche en cours ou toute autre tâche de l'application. Après exécution de la séquence
d'interruption, la tâche en cours reprend son exécution normalement. Ainsi sous RTC, le
mécanisme d'interruption n'a pas d'effet sur l'ordonnancement des tâches.
D'un point de vue matériel, RTC affecte 27 vecteurs d'interruptions aux interruptions "logiciels".
L'utilisateur est ensuite libre de répartir ces vecteurs entre ceux de RTC et ceux qui
correspondent aux séquences immédiates.
Lors de l'initialisation du système, RTC exécute une séquence dite "d'initialisation" obtenue par
le processeur avec le vecteur "RESET". Cette séquence construit une table de configuration
indiquant le nombre d'objets de chaque type constituant l'application, à savoir : le nombre de
tâches, le nombre de niveaux de priorités (éventuellement inférieur au nombre de tâches), le
nombre de sémaphores, le nombre de boîtes aux lettres, le nombre de messages en attente et le
nombre de délais. Ces notions correspondent aux objets gérés par le moniteur. L'utilisateur se
contente de référencer les objets par leur type et leur numéro d'ordre. Cette "encapsulation" des
objets contribue à augmenter l'indépendance entre les applications et le moniteur.
RTC, livré sous forme d'une EPROM, matérialise parfaitement le concept de composant
logiciel. L'un de ses atouts est son indépendance vis-à-vis des caractéristiques du matériel sur
lequel il s'implante. L'environnement matériel minimum peut être réduit à une carte contenant
un processeur, de la RAM et l'EPROM du noyau. Dans le cas de l'utilisation des fonctions de
temporisation, la présence d'une horloge temps réel est alors obligatoire.
Un autre des atouts de ce noyau réside dans sa remarquable compacité : pas plus de 3 Ko (quel
que soit le processeur utilisé) pour intégrer l'ensemble de ses fonctions, ce qui laisse
évidemment une grande liberté à l'application (en terme de place mémoire occupée).
Non classifié
Novembre 1999
Systèmes temps réels
22
SIGLES ET TERMINOLOGIE :
Sigles généraux :
ANSI
BIT
BSP
CII
EPROM
American National Standards Institute
Entité informatique binaire (0 ou 1)
Board Support Package (la partie logiciel dépendante de l'environnement du
processeur : matériel et mapping mémoire de la carte)
Compagnie Internationale pour l'Informatique
Erasable Programmable Read Only Memory
FAQ
Frequently Asked Questions (Foire Aux Questions ou Questions Fréquemment
posées)
FIFO
First In, First Out (premier arrivé, premier servi)
FTP
File Transfer Protocol
GNU
Gnu is Not Unix
HP
IEEE
I/O
IHM
IMSE
INRIA
IT
ISR
NFS
OS
PROM
Helwet-Packard
Institute of Electrical and Electronics Engineers
Input Output (entrée/sortie)
Interface Homme-Machine
Integrated Manufacturing Systems Engineering
Institut National de Recherche en Informatique et Automatique
interruption logicielle ou matérielle
Interrupt Service Routine ou Routine d'interruption
Network File System
Operating System
Program Read Only Memory
POSIX
Portable Operating System Interface for computer environments
QNAP
RAM
ROM
Queuing Network Analysis Package
Random Access memory (mémoire à accès aléatoire)
Read Only Memory (mémoire morte)
RPC
Remote Procedure Call
RSH
RS232
Remote SHell
liaison série au standard EIA-RS-232 (25 broches), adaptateur pour la transmission
asynchrone de données
Real Time
Structured Analysis for Real Time Systems
Standardisation du Cœur des Exécutifs des Produits Temps Réel Européens
Trivial File Transfer Protocol
RT
SA-RT
SCEPTRE
TFTP
Non classifié
Novembre 1999
Systèmes temps réels
TR
UC
23
Temps réel
Unité Centrale (microprocesseur)
Terminologie :
Cible
Le terme cible est employé pour désigner le support physique des
outillages
Coupleur
Carte d’entrées/sorties permettant de relier un bus externe
(DIGIBUS)
Evolution
L’évolution du logiciel comprend son portage et l’ajout/modification
de ses fonctions
Intégration logicielle
Une des phases du processus de développement logiciel définie par la
GAM-T-17. L’intégration a lieu avant la validation
Maître d'œuvre
Entité chargée du développement du produit
Maître d'ouvrage
Entité donneuse d'ordre de développement d’un produit
Message
Bloc fixe d’informations circulant sur le bus entre les abonnés du
réseau
Méthode
Une méthode impose un langage de modélisation qui oriente le
développement suivant une vision fonctionnelle et/ou dynamique
et/ou statique. Elle impose également un cycle de développement
(spirale, exploratoire, cycle en V...)
Portage
Le portage consiste à modifier et recompiler les fichiers sources d’un
logiciel en vue d’une exécution sur un système d'exploitation ou un
microprocesseur différent. La fonctionnalité du logiciel n’est pas
modifiée
Trame
Ensemble des messages circulant sur le bus à des fréquences
déterminées
Non classifié
Novembre 1999
Systèmes temps réels
24
BIBLIOGRAPHIE :
[DOR91] Dorseuil, Temps réel en milieu industriel, Dunod – janvier 1991
[HER98] Matthieu Herrb, Le système d'exploitation temps réel VxWorks, LASS-CNRS, avril
1998
[WRS01] Wind River Systems, VxWorks Programmer's guide 5.3.1, Edition 1, 4 mar. 1998
[WRS02] Wind River Systems, User's Guide : Tornado 1.0 (UNIX Version), February 1998
[DEI99] Patrick Deiber, Les processus légers (Threads), probatoire CNAM de Versailles,
février 1999
[MOT93] Motorola, M68000 8-/16-/32-Bit Microprocessors User’s Manual, Ninth Edition,
1993
[RTC87] GSI-TECSI, Realtime Craft, le composant logiciel, Description abrégée du
moniteur XEC, Paris, Mars 1987
[RIF93]
J.-M. Rifflet, La programmation sous UNIX, Ediscience, 1993.
Sites Internet :
http://www.realtime-magazine.com/
Magazine dédié au temps réel
http://www.wrs.com
Wind River Systems fournisseur du système temps réel
VxWorks et de son environnement Tornado.
http://www.edtn.com/embedsys
Embedded Developpers Journal
http://www.ec-lille.fr/~rdp/
Groupe Francophone sur les réseaux de pétri
http://www.tecsi.com/rtc/
Le système temps réel RealTime Craft (RTC) de Tecsi
news:comp.realtime
Forum électronique sur le temps réel, ainsi que les réponses
des questions fréquemment posées : Comp.realtime:
Frequently Asked Questions (FAQs)
http://www.faqs.org/faqs/realtimecomputing/faq/
news:comp.os.vxworks
Forum électronique sur le système VxWorks (The VxWorks
real-time operating system)
news:comp.arch.embedded
Forum électronique sur les architectures embarquées et sur
les systèmes à base de processeur Motorola 68000
news:comp.sys.m68k
Non classifié
Novembre 1999
Systèmes temps réels
25
GLOSSAIRE :
Bus : Dispositif destiné à assurer
simultanément
les
transferts
d'informations entre différents sousensembles d'un système informatique
selon des spécifications physiques et
logiques communes.
Cache : mémoire très rapide entre la
mémoire centrale et le processeur.
L'information est d'abord recherchée dans
la cache. L'accès à la mémoire cache est
moins coûteux qu'un accès à la mémoire
centrale.
Changement
de
contexte
(ou
commutation de contexte) : le fait de
passer d'un contexte à un autre. Le
changement de contexte engendre la
sauvegarde du contenu de la mémoire et le
chargement avec d'autres valeurs.
Contexte d'exécution : environnement
d'exécution d'un processus (registres,
zones mémoires…).
Contexte mémorisé : zone mémoire
propre à une tâche dans laquelle est stocké
le contexte d'exécution de la tâche,
lorsqu'elle n'est pas en cours d'exécution.
Deadlock (Interblocage) : phénomène qui
se produit lorsque deux processus
s'empêchent mutuellement d'accéder à une
ressource d'exécution.
Débogueur (debugger) : Programme
d'aide à l'élimination des défauts de
conception ou de réalisation se
manifestant par des anomalies de
fonctionnement.
Donnée (data) : Représentation d'une
information
sous
une
forme
conventionnelle destinée à faciliter son
traitement.
Élément binaire (bit = binary digit) :
Information représentée par un symbole à
Non classifié
deux valeurs généralement notées 0 et 1,
associées aux deux états d'un dispositif.
Exception : ce sont des exceptions du
processeur, qui sont soit des interruptions
matérielles, soit des "traps" logiciels. Les
exceptions provoquent des déroutements
de l'exécution courante du programme
vers des tâches immédiates. Pour une
description plus approfondie se référer à la
documentation du processeur.
Exécutif : Un exécutif regroupe
l'ensemble des traitements nécessaires à
l'exécution des activités opérationnelles
d'un programme.
Evénement : signal qu'une tâche transmet
à une autre tâche pour lui signifier que la
condition qu'elle attend est satisfaite.
Implanter : Installer un logiciel ou un
sous-système donné en réalisant les
adaptations
nécessaires
à
leur
fonctionnement dans un environnement
défini.
Implémenter : Réaliser la phase finale
d'élaboration d'un système qui permet au
matériel, aux logiciels et aux procédures
d'entrer en fonction. Note : Il convient de
ne pas utiliser le terme implémenter
comme synonyme d'implanter appliqué à
un logiciel.
Interruption matérielle : exception
provoquée par l'environnement matériel
(la carte ou le processeur lui-même).
Intervalle de temps (time-slice) :
intervalle de temps pendant lequel la
ressource d'exécution est attribuée à une
entité d'exécution.
Logiciel (software) : Ensemble des
programmes, procédés et règles, et
éventuellement de la documentation,
relatif au fonctionnement d'un ensemble
de traitement de données.
Novembre 1999
Systèmes temps réels
Mémoire morte (ROM, read only
memory) : Mémoire dont le contenu ne
peut être modifié en usage normal.
Mémoire vive (RAM, random access
memory) : Mémoire dont le contenu peut
être modifié en usage normal.
Numérique : Se dit, par opposition à
analogique, de la représentation de
données ou de grandeurs physiques au
moyen de caractères - des chiffres
généralement - et aussi des systèmes,
dispositifs ou procédés employant ce
mode de représentation discrète.
Octet : Ensemble ordonné de huit
éléments binaires traités comme un tout.
Un octet est souvent utilisé pour
représenter un caractère alphanumérique.
Lorsqu'une grandeur est exprimée en
multiples de l'octet, les symboles Ko, Mo
et Go représentent respectivement le
kilooctet, le mégaoctet et le gigaoctet.
Dans ce cas et contrairement à la norme,
on considère généralement que le kilooctet
est égal à 2^10 = 1 024 octets et non 1 000
et le mégaoctet à 2^20 et non 1 000 000.
Ordonnancement
(scheduling)
:
mécanisme de gestion des ressources
d'exécution entre plusieurs entités
exécutables.
Ordonnanceur : logiciel chargé d'assurer
que la tâche en cours d'exécution est
actuellement la tâche prête la plus
prioritaire.
Parallélisme : notion d'exécution de
plusieurs entités exécutables en même
temps.
Pointeur (pointer) : Donnée permettant
de retrouver l'adresse d'un groupe de
données.
Préemptible : "pouvoir" que possède une
entité
d'exécution
d'interrompre
l'exécution d'une entité de priorité plus
Non classifié
26
faible. La préemption est différente de
l'intervalle de temps (time-slice).
POSIX : groupe de travail sur la
définition de standard en matière de
système d'exploitation.
Processus (process) : souvent définit
comme "un programme en exécution",
parfois appelé tâche.
Remote Procedure Calls (RPC) : Les
RPC, appels de procédures à distance,
permettent aux programmes d'appeler des
procédures situées sur d'autres machines.
Le but des RPC est de cacher au client le
fait que l'appel va s'exécuter à distance.
Sémaphore : (Dijkstra) Permet de gérer
l'entrée en section critique. Un sémaphore
(semaphore) est une structure de données
composée d'un compteur entier et d'une
file d'attente gérée en FIFO. L'utilisation
d'un sémaphore se fait par les opérations P
(décrémentant le compteur) et V
(incrémentant le compteur). L'opération P
permet de demander l'accès à un élément
de ressources (demande de ticket).
L'opération V permet de libérer un
élément de ressource (restitution du
ticket).
Sockets : Les sockets permettent à deux
processus de communiquer de manière
bidirectionnelle sur deux machines
différentes. Il existe deux modes
d'utilisation des sockets : le mode non
connecté où l'émetteur doit toujours
spécifier l'adresse du destinataire (la
connexion n'est pas continue), et le mode
connecté où la connexion est tout le temps
établie.
Système
d'exploitation
(operating
system) : Un système d'exploitation définit
un environnement d'exécution comparable
à un exécutif multi-programmes et multiapplications, et un environnement de
production comprenant de interfaces, des
Novembre 1999
Systèmes temps réels
27
utilitaires, des outils de production de
logiciel…
elle s'exécute (contexte mémorisé) et de la
façon dont on la gère (priorité, état).
Système d'exploitation temps réel (real
time operating system) : Un système
d'exploitation est dit temps réel si son
environnement d'exécution est compatible
des besoins des systèmes temps réel. Il
doit pour cela répondre en des temps
bornés fixés pour des hypothèses de
fonctionnement, respecter le principe
édictant que si deux activités pouvant
utiliser les mêmes ressources de calcul et
de traitement sont éligibles pour
exécution, alors l'activité de plus faible
priorité ne peut s'exécuter au détriment de
l'activité de plus forte priorité.
Temps de commutation : temps
nécessaire
à
la
réalisation
d'un
changement de contexte.
Système temps réel : Un système temps
réel est un système dont les spécifications
contiennent des références directes ou
indirectes au temps réel. Les activités d'un
système temps réel sont caractérisées par
des contraintes temporelles (dates ou
délais d'activation, durée d'exécution,
etc…). Le comportement d'un système
temps réel est déterminé de façon à
satisfaire les contraintes temporelles de
ses activités lorsque les hypothèses de
fonctionnement sont observées, et à
minimiser une fonction globale de perte
dans le cas contraire.
Trap logiciel : exception provoquée par
l'exécution d'une instruction logicielle
spécifique du processeur ou par une erreur
d'exécution.
Tâche : agent actif responsable de
l'exécution d'un programme. Une tâche
possède un identificateur et des attributs
caractéristiques de la machine sur laquelle
Non classifié
Temps réel (realtime) : Mode de
traitement qui permet l'admission des
données à un instant quelconque et
l'obtention immédiate des résultats.
Test de performance (benchmark) :
Évaluation des performances d'un système
par simulation des conditions réelles
d'utilisation, à l'aide de programmeséchantillons.
Tubes (pipes) : Les tubes sont un moyen
de faire communiquer deux processus
UNIX situés sur la même machine. Ce
mécanisme crée un espace mémoire
partagée. Les tubes fonctionnent de
manière unidirectionnelle. Le mécanisme
de tube peut être également utilisé avec les
processus légers. L'accès au tube doit être
protégé, si ce dernier est utilisé par
plusieurs processus légers. Dans un
contexte réparti où deux processus sont
sur deux machines différentes, les tubes ne
peuvent pas être utilisés. Les sockets
résolvent ce problème.
Novembre 1999

Documents pareils