Systèmes d`exploitation Temps Réels

Transcription

Systèmes d`exploitation Temps Réels
Systèmes d'exploitation
Temps Réels
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
1
Introduction
●
Objectif :
➢
➢
●
qu'est-ce qu'un système d'exploitation temps réel ?
fonctionnalités attendues
présentation de quelques produits
➢
➢
➢
VxWorks
OSEK/VDX
Linux pour le temps réel :
✔
✔
F. Touchard
approches co-noyau et noyau préemptible
Xenomai
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
2
Système d'exploitation
●
un ensemble de programmes qui permet de
➢
➢
●
gérer les ressources matérielles d'un ordinateur
fournir des services aux utilisateurs pour accéder à ces
ressources
les caractéristiques vont varier suivant le type d'utilisation
de la machine :
➢
multi-utilisateur vs mono-utilisateur
✔
➢
multi-tâche vs mono-tâche
✔
➢
➢
F. Touchard
multi-tâche préemptif vs multi-tâche coopératif
distribué ou non
✔
➢
multi-utilisateur en partageant le temps d'utilisation
des machines distantes reliées par un réseau de
communication apparaissent comme une machine unique
temps réel
embarqué
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
3
Système d'exploitation
●
historique
➢
➢
les premiers ordinateurs étaient mono-utilisateur et monotâche
pas besoin d'OS
✔
●
seulement des bibliothèques de programmes pour accéder
aux ressources
systèmes d'exploitation « modernes »
➢
2 grandes familles :
✔
systèmes « Unix-like »
✘
✘
✘
✘
✔
MS Windows
✘
✘
F. Touchard
propriétaires ou non (certifiés par OpenGroup)
System-V
BSD
Linux
propriétaires
essentiellement destinés aux architectures Intel (IA-32, x86-64)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
4
Système d'exploitation
●
noyau
➢
gestion des tâches
✔
➢
gestion du matériel
✔
➢
●
➢
➢
communication entre les programmes et le matériel
monolithique
monolithique modulaire
micro-noyau
interface utilisateur
➢
➢
➢
F. Touchard
CPU, mémoire, périphériques, réseau, etc...
architecture du noyau
➢
●
création, desruction ordonnancement, etc...
ne fait pas partie intégrante de l'OS, mais essentielle
passe par un programme (shell)
mode ligne ou mode graphique
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
5
Systèmes d'exploitation temps réel
●
système d'exploitation ou exécutif temps réel
➢
➢
fournir à l'utilisateur un environnement lui permettant de
mettre en œuvre facilement son application, en lui cachant
un certain nombre de problèmes (gestion des
périphériques, des fichiers, interruptions, etc...)
constitué d'un ensemble de primitives chargées de fournir
cette fonctionnalité
✔
✔
➢
possédant des fonctionnalités spécifiques pour gérer les
contraintes temporelles
✔
✔
F. Touchard
souvent (mais pas toujours) exécutées en mode noyau
(appels système, ou system calls)
interfacées avec l'utilisateur par des fonctions dites
"systèmes" (de la libc pour les systèmes Unix, Microsoft C
Run-time Library, incluse dans Microsoft Visual C++)
le comportement du système doit être prédictible en terme de
temps de réponse
il doit fournir les outils pour aider à respecter les échéances
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
6
les exécutifs du marché
●
plusieurs dizaines de systèmes d'exploitation temps réel
➢
➢
http://es2.dedicated-systems.info/
la plupart sont des OS généralistes
✔
✔
✔
✔
✔
✔
✔
➢
beaucoup plus de systèmes spécialisés développés dans le
cadre d'un secteur d'activité (automobile, avionique,
téléphonie, etc...)
✔
✔
➢
F. Touchard
VxWorks
QNX
ChorusOS (VirtualLogix)
pSOS+
VRTX
Windows CE
Xenomai
OSEK/VDX
IPhone, Android, Windows Phone 7
ouverts ou propriétaires
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
7
les exécutifs du marché
●
motivations pour des systèmes généralistes
➢
la plupart des applications ont besoin de services
"généraux"
✔
✔
➢
souci de minimiser les phases de développement
✔
✔
➢
F. Touchard
accès à des fichiers
accès au réseau
minimiser les coûts
réutilisation de composants
souci de portabilité des applications, indépendance vis-à-vis
de la plateforme d'exécution
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
8
les exécutifs du marché
●
Motivations pour des systèmes spécialisés
➢
performances
✔
➢
➢
utilisations très spécifiques
marché captif
✔
✔
✔
➢
F. Touchard
adéquation au matériel utilisé
automobile
avionique
télécoms
quand le coût n'est pas un argument...
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
9
services attendus d’un RTOS
●
gestion des threads
➢
➢
➢
implémentent généralement l’unité d’activité
considérés comme des unités indépendantes pour
l’ordonanncement
peuvent exister sous forme de
✔
✔
✔
➢
états :
✔
✔
✔
✔
✔
F. Touchard
threads périodiques
threads apériodiques (sporadiques)
threads serveurs (pour implémenter des serveurs de tâches
apériodiques)
dormant (en attente de la requête de réveil)
prêt (en attente de la CPU)
en cours
suspendu (en attente d’une ressource)
terminé
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
10
services attendus d’un RTOS
●
le noyau
➢
exécute au bénéfice de l’utilisateur les opérations qui
nécessitent des privilèges spéciaux
✔
✔
✔
➢
F. Touchard
appels systèmes
ordonnanceur ( + gestion du temps)
gestion des interruptions matérielles et logicielles
souvent implémenté sous la forme d’un « micro-noyau »
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
11
services attendus d’un RTOS
●
gestion du temps
➢
➢
●
communication et synchronisation
➢
➢
➢
●
➢
➢
F. Touchard
signaux, événements
gestion de la mémoire
➢
●
files de messages
mémoire partagée
sémaphores, mutexes, variables conditionnelles
notifications asynchrones
➢
●
horloges
timers
mémoire virtuellle
verrouillage de la mémoire
protection de la mémoire
entrées-sorties, gestion du réseau
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
12
Études de cas
●
●
●
F. Touchard
VxWorks
OSEK/VDX
extensions Temps Réel pour Linux : Xenomai
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
13
VxWorks
●
●
●
●
produit propriétaire de Wind River
le plus utilisé
rendu « célèbre » par la mission Pathfinder sur Mars
construit autour d'un micronoyau (WIND)
➢
➢
➢
➢
➢
adaptable aux besoins de l'utilisateur (profil)
profil noyau minimal : ~ 100 kB
profil noyau de base : ~ 150 kB
profil OS de base (noyau de base + qques supports : I/O,
coprocesseur, ...) : ~ 250 kB
activation ou désactivation à la demande de certains
services
✔
✔
F. Touchard
héritage de priorité
gestion de la mémoire, etc...
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
14
VxWorks
●
noyau monolithique
➢
➢
●
procure tous les services attendus d'un OS Temps Réel
➢
➢
➢
➢
➢
F. Touchard
non Unix
mais fournit une interface conforme à POSIX
ordonnanceur préemptif basé sur la priorité
gestion de la mémoire via une MMU
support des processeurs sans MMU
communications inter-processeurs via des messages
suivant le protocole open source TIPC (Transparent
Interprocess Communications)
environnements de développement (Eclipse, simulateur
pour tester l'application même sans disposer du matériel, y
compris le réseau)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
15
VxWorks
●
disponible sur de nombreuses architectures
➢
➢
➢
➢
➢
➢
F. Touchard
ARM (9, 11)
Intel Pentium (2, 3, 4, M)
Intel XScale (IXP425, IXP465)
MIPS (4K, 5K, ...)
PowerPC
SuperH (4, 4a)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
16
OSEK/VDX
exécutif développé dans le cadre des applications
embarquées pour le contrôle automobile (automotive)
● http://www.osek-vdx.org
●
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
17
OSEK/VDX
●
Offene Systeme und deren Schnittstellen für die
Elektronik im Kraftfahrzeug (BMW, Bosch,
DaimlerChrysler, Opel, Siemens, VW et l'Université of
Karlsruhe)
➢
➢
●
F. Touchard
Open Systems and the Corresponding Interfaces for
Automotive Electronics
Systèmes Ouverts et les Interfaces Correspondantes
pour l'Electronique Automobile
Vehicle Distributed eXecutive (Renault)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
18
OSEK/VDX
●
●
●
●
●
●
●
F. Touchard
exécutif développé dans le cadre des applications
embarquées pour le contrôle automobile (automotive)
Consortium européen (franco-allemand) depuis 1995
pour les configurations mono processeur
avec des contraintes temps réel strictes
pour une grande variété d'applications, pour les phases
de mise au point aussi bien que pour la production
(gestion des erreurs)
indépendant du langage de programmation (syntaxe à la
ANSI-C)
portabilité et ré-utilisation du software
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
19
OSEK/VDX
●
organisation du consortium (2011)
Comité de direction
Adam Opel AG, BMW AG, Daimler AG, IIIT - Univ. Karlsruhe, GIE.RE. PSA, Renault, Robert Bosch GmbH, Continental Automotive GmbH, Volkswagen AG
Comité technique
STEERING COMMITTEE,
Accelerated Technology Inc.,
ACTIA,
AFT GmbH,
Ashling,
ATM Computer GmbH,
Blaupunkt,
Borg Instruments GmbH,
C&C Electronics,
Cambridge Consultants,
Continental Teves,
Cummins Engine Company,
Delco Electronics,
Denso,
EDS
Epsilon GmbH,
Working Group
Operating System
ETAS GmbH & Co KG,
FIAT- Centro Ricerche,
Ford (Europe),
FZI,
GM Europe GmbH,
Greenhills,
Grupo Antolin,
Hella KG,
Hewlett Packard France,
Hitachi Micro Systems Europe Ltd.,
Hitex,
IBM Deutschland Entwicklung GmbH,
Infineon,
INRIA,
Integrated Systems Inc.,
Working Group
Communication
IRISA,
Lauterbach
LucasVarity, Metrowerks
Magneti Marelli,
Mecel,
Motorola,
National Semiconductor,
NEC Electronics GmbH,
Noral,
NRTA,
Philips Car Systems,
Porsche AG,
Sagem Electronic Division,
Softing GmbH,
ST Microelectronics,
Stenkil Systems AB,Sysgo Real-Time Solutions GmbH,
TECSI,
Telelogic GmbH,
TEMIC,
Texas Instruments,
Thomson-CSF Detexis,
Trialog,
UTA - United Technologies Automotive,
Valeo Electronics,
VDO Adolf Schindling GmbH,
Vector Informatik,
Visteon,
Volvo Car Corporation,
Wind River Systems,
3Soft GmbH.
Working Group
Network Manag.
Working Group
Certification
Groupe
Groupe des
des Utilisateurs
Utilisateurs
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
20
Exigences spécifiques
●
dues au contexte de développement des applications
automobiles
➢
➢
➢
➢
➢
F. Touchard
l'OS est configuré et mis à l'échelle de façon statique
(spécification statique du nombre de tâches, de
ressources, de services)
l'OS est capable de tourner à partir de mémoires ROM
l'OS fournit la portabilité des tâches applicatives
l'OS doit se comporter de façon prédictible et documentées
et se conformer aux exigences temps réel des applications
automotives
l'OS doit permettre l'implémentation de paramètres de
performance prédictibles
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
21
Architecture générale
●
●
organisée autour des ECUs (Electronic Control Unit)
3 entités :
➢
➢
➢
F. Touchard
OSEK-OS (real time operating system) : environnement
d'exécution des ECUs
OSEK-COM (communication) : échange de données entre
et inter ECUs
OSEK-NM (network management) : configuration,
registration et monitoring des ECUs
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
22
Architecture générale
Operating System
Communication
Interaction Layer (IL)
Transport Layer (TL)
Network Management
Application
Data Link Layer (DLL)
Communication hardware
Data Link Layer (DLL)
Réseau (CAN bus)
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
23
Architecture générale
OSEK fournit un environnement d'exécution pour les
applications qui peuvent s'exécuter indépendamment
les unes des autres
● 2 interfaces utilisateurs fournies par OSEK pour gérer
les entités qui veulent accéder concurrement à la CPU:
●
➢
➢
les routines de gestion d'interruption (ISR) gérées par
l'OS
les tâches
✔
✔
F. Touchard
basiques
étendues
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
24
Architecture générale
Priorité
haute
●
3 niveaux d'exécution
➢
➢
➢
Niveau
d'interruption
interrupt
niveau logique (fonctionnement de l'ordonnanceur)
niveau tâche
sans OS services
avec OS services
les 3 niveaux vont en
ordre décroissant de
priorité
● les niveaux de priorité à
l'intérieur d'un niveau
d'exécution sont définis
de façon statique
●
Niveau logique pour l'ordonnanceur
Niveau
des tâches
attente : oui/non
1
Introduction aux systèmes Temps Réels
4
Tâches
préemption :
non/full/mixed
basse
F. Touchard
2
3
Systèmes d'exploitations pour le temps réel
Déroulement
du contexte
25
Architecture générale
●
les services de l'OS gèrent les 3 niveaux d'exécution
ainsi que
➢
➢
➢
➢
➢
➢
F. Touchard
l'administration des tâches
l'administration des événements (synchronisation des
tâches)
l'administration des ressources matérielles partagées
les compteurs et alarmes
la communication entre tâches par messages
le traitement des erreurs
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
26
Les tâches d'OSEK/VDX
●
tâches basiques
➢
➢
sans points bloquants
rend le processeur
✔
✔
✔
✔
à la terminaison
préemption par une tâche
de priorité supérieure
sur occurrence d'un
interrupt
3 états
✘
✘
✘
F. Touchard
running
terminate
running : la tâche a la CPU
ready : la tâche a été préemptée
suspended : la tâche est terminée
et attend une requête de
ré-activation
Introduction aux systèmes Temps Réels
suspended
preempt
Systèmes d'exploitations pour le temps réel
start
activate
ready
27
Les tâches d'OSEK/VDX
●
tâches étendues
➢
➢
en plus des propriétés des
tâches basiques, elles
peuvent invoquer des
services bloquants
possèdent un état
supplémentaire : waiting,
pendant lequel elles
attendent l'allocation de la
ressource bloquante
running
wait
terminate
suspended
waiting
preempt
start
activate
release
ready
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
28
Les tâches d'OSEK/VDX
●
les tâches basiques n'ont pas d'autres points de
synchronisation que leur début et leur fin
➢
➢
●
les tâches étendues peuvent se suspendre pour
attendre une information intermédiaire
➢
➢
F. Touchard
des applications avec des points internes de
synchronisation seront implémentées par plusieurs
tâches basiques
peu gourmandes en termes de ressources système
(RAM)
elles peuvent implémenter une application cohérente en
une seule tâche
elles demandent un peu plus de ressources système
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
29
Propriétés des tâches
●
activation
➢
2 primitives
✔
✔
➢
➢
après l'activation, la tâche est prête dès la 1ère instruction
suivant la classe de conformance, la requête d'activation
est prise en compte ou non :
✔
✔
F. Touchard
ActivateTask
ChainTask
pas d'instances multiples d'une tâche
les requêtes multiples sont éventuellement mises en queue
pour être prises en compte à la terminaison
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
30
Propriétés des tâches
●
terminaison
➢
➢
ne peut être provoqué que par la tâche elle-même
2 primitives
✔
✔
TerminateTask
ChainTask
activation des tâches périodiques à l'aide de compteurs
(voir plus loin)
● changement de contexte
●
➢
➢
●
priorité
➢
➢
F. Touchard
par appel à la primitive Schedule
par décision de l'ordonnanceur
à priorité égale, FIFO par rapport à l'activation
une tâche préemptée est première de la liste d'attente
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
31
Politique d'ordonnancement
valeur des priorités statique (sauf quand on utilise
l'algorithme de priorité plafonnée)
● 3 politiques
●
➢
➢
➢
F. Touchard
préemptif
non préemptif
mixte
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
32
Politique d'ordonnancement
l'ordonnanceur est considéré comme une ressource qui peut
être réservée, empêchant ainsi temporairement la
préemption (appel à la primitive GetRessource)
● l'appel à l'ordonnanceur est effectué dans les conditions
"classiques" (terminaison, opération bloquante, activation
d'une tâche de priorité supérieure, appel à
ReleaseResource, retour d'interrupt)
pas d'appel pendant la routine d'interrupt
●
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
33
Traitement des interruptions
par une routine dédiée : ISR, généralement dans le
contexte de la tâche interrompue
● acquitte l'interruption sur le contrôleur et la transforme
en action pour l'application (e.g. Event)
● 2 modèles d'ISR
●
➢
➢
F. Touchard
type 1: routine où l'on n'a pas besoin de faire un appel
système → seulement un retard
type 2: déclarée comme telle → appels systèmes pour
l'entrée et la sortie de la routine d'interruption.
pas d'appel à l'ordonnanceur pendant son exécution, pas
d'appel bloquant
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
34
Synchronisation par événement
●
●
●
●
●
F. Touchard
utilise le modèle synchrone, c'est-à-dire qu'un
événement est généré et attendu de façon explicite
de type "privé" appartenant au consommateur,
utilisable uniquement pour des tâches étendues
critère pour la transition waiting → ready quand un au
moins des événements attendus est présent
un événement est persistant, c'est-à-dire qu'une tâche
dans l'état running demandant à attendre un
événement déjà arrivé va rester dans cet état
l'effacement d'un événement doit se faire de façon
explicite (permet de simuler des événements fugaces)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
35
Synchronisation par événement
●
synchronisation de tâches étendues préemptables
✔
✔
F. Touchard
exemple de 2 tâches T1 et T2 avec prio(T1) > prio(T2)
T1 est bloquée dans l'attente d'un événement que va
envoyer T2
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
36
Synchronisation par événement
●
synchronisation de tâches étendues préemptables
Ordonnanceur
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
waiting
running
prio(T1) > prio(T2)
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
37
Synchronisation par événement
●
synchronisation de tâches étendues préemptables
Ordonnanceur
re
ad
y
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
waiting
running
set event
running
ready
prio(T1) > prio(T2)
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
38
Synchronisation par événement
●
synchronisation de tâches étendues préemptables
Ordonnanceur
re
ad
y
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
waiting
running
set event
running
clear event
ready
prio(T1) > prio(T2)
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
39
Synchronisation par événement
●
synchronisation de tâches étendues préemptables
Ordonnanceur
re
ad
y
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
waiting
running
set event
running
clear event
wait for
event
ready
waiting
running
prio(T1) > prio(T2)
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
40
Synchronisation par événement
●
synchronisation de tâches étendues non préemptables
Ordonnanceur
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
F. Touchard
waiting
running
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
41
Synchronisation par événement
●
synchronisation de tâches étendues non préemptables
Ordonnanceur
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
F. Touchard
waiting
running
ready
set
event
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
42
Synchronisation par événement
●
synchronisation de tâches étendues non préemptables
Ordonnanceur
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
F. Touchard
waiting
running
ready
set reschedule
event
Introduction aux systèmes Temps Réels
running
ready
Systèmes d'exploitations pour le temps réel
43
Synchronisation par événement
●
synchronisation de tâches étendues non préemptables
Ordonnanceur
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
F. Touchard
waiting
running
ready
set reschedule
event
Introduction aux systèmes Temps Réels
clear event
running
ready
Systèmes d'exploitations pour le temps réel
44
Synchronisation par événement
●
synchronisation de tâches étendues non préemptables
Ordonnanceur
Evénement de la
tâche étendue 1
Tâche étendue 1
Tâche étendue 2
F. Touchard
waiting
running
ready
set reschedule
event
Introduction aux systèmes Temps Réels
clear event
running
ready
Systèmes d'exploitations pour le temps réel
wait for
event
waiting
running
45
Gestion des ressources
●
OSEK-VDX permet la pleine gestion des ressources
critiques
➢
➢
algorithme de la priorité plafonnée pour éviter les
phénomènes d'inversion de priorité et les interblocages
l'algorithme de priorité plafonnée peut être optionnellement
étendu aux accès à des ressources partagées par des ISR
✔
✔
➢
➢
F. Touchard
pour assigner les priorités plafonds, des priorités virtuelles plus
grandes que celles des tâches sont assignées aux interrupts
sinon l'OS n'exécutera une ISR que si toutes les ressources
qui y seront demandées sont libres
l'OS interdit l'accès imbriqué à une même ressource
l'ordonnanceur est une ressource
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
46
Alarmes et compteurs
●
pour le traitement des événements récurrents
➢
➢
timers
nombre de tours de l'arbre à cames
enregistrés par un objet "compteur" qui compte les ticks
et repasse à 0 quand il atteint la valeur maximale.
Plusieurs alarmes peuvent être associées à un
compteur. Une tâche peut être associée à l'alarme (de
façon statique, à la génération du système)
● à l'occurrence de l'alarme, au choix :
●
➢
➢
➢
F. Touchard
activation de la tâche
signalisation d'un événement de la tâche
exécution d'une routine dans le contexte de l'exécutif
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
47
Communication
●
par des messages dont la structure est définie à la
génération du système
➢
messages d'événements
✔
messages mis en queue dans une file de message. Mais il
ne peut y avoir qu'une seule tâche en attente
✘
➢
messages d'état
✔
message au "tableau noir", non mis en queue mais
contenu dans un buffer à une place, surécrits quand un
nouveau arrive
✘
●
F. Touchard
transition d'état demandée, alarmes, etc...
résultat d'un capteur...
modèle de communication asynchrone (les appels en
lecture ou écriture ne sont jamais bloquants)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
48
Communications
●
re-synchronisation sur la fin de l'opération par
➢
➢
➢
➢
➢
●
type de communication défini de façon statique
➢
➢
F. Touchard
polling
activation d'une tâche en fin d'opération
signalisation d'un événement en fin d'opération
exécution d'une routine de callback
occurrence d'une alarme si l'opération ne s'est pas
terminée dans un délai de garde
1 à 1 (mais on peut définir une liste à la générarion et ne
choisir le destinataire qu'à l'exécution)
1 à n, chaque destinataire recevant le message
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
49
Développements récents
●
de plus en plus de technologies "assistées"
➢
➢
freinage
direction
beaucoup plus exigeantes en termes de déterminisme
et de contraintes temporelles
● émergence de réseaux sécuritaires (TTP/C, TTCAN,
Flexay)
● OSEKtime : OS temps réel qui peut gérer, en plus des
tâches "classiques" d'OSEK, des tâches "Time
Triggered" (TT)
●
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
50
OSEKtime
comportement déterministe même en condition de
surcharge et conditions de faute
● compatible avec OSEK/VDX (activé pendant les temps
morts de OSEK/VDX)
● Tâches TT
●
➢
➢
➢
➢
➢
F. Touchard
modules (1 point d'activation, 1 point de sortie)
3 états : suspended, running, preempted
ordonnancement statique et préemptif des tâches TT
(table d'ordonnancement remplie hors ligne)
surveillance du respect des échéances par le noyau. En
cas de non respect, exécution d'une routine utilisateur et
shutdown du système (?!?)
exécution des tâches non TT dans les creux,
systématiquement préemptées par les tâches TT
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
51
Linux pour le Temps Réel
●
points forts de Linux
➢
➢
➢
➢
➢
●
points faibles
➢
●
●
pas vraiment un micro noyau
mais Linux "natif" n'est pas un OS Temps Réel
il existe des solutions pour faire de Linux un RTOS :
➢
➢
F. Touchard
fiabilité du noyau
faible coût
performances (http://ltp.sourceforge.net)
portabilité
ouvert aux autres systèmes (y compris Windows)
adjonction d’un co-noyau temps réel
modifier Linux pour avoir un noyau entièrement préemptible
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
52
Linux pour le Temps Réel
●
l’approche co-noyau
➢
➢
solution « classique » (a existé même pour Windows : RTX)
impossible de faire confiance au noyau GPOS pour les
aspects temps réels
✔
✔
➢
➢
➢
le noyau temps réel intercepte toutes les interruptions
matérielles et les traite avant de les passer éventuellement
au noyau Linux
✔ PIC virtuel
Linux fonctionne avec une priorité inférieure à celle du
noyau temps réel
mais
✔
✔
F. Touchard
délègue ceux-ci à un noyau spécialisé
le noyau Linux continue à servir les tâches classiques
nécessité de porter sur le noyau temps réel tous les pilotes
dont on attend une réponse temps réel
les appels aux fonctions de la glibc peuvent avoir des
latences importantes
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
53
Linux pour le Temps Réel
➢
plusieurs approches
✔
support pour l’exécution des tâches temps réel dans l’espace
utilisateur
✘
✘
✔
tâches temps réel uniquement dans l’espace noyau (modules)
✘
F. Touchard
Xenomai
RTAI
RTLinux/GPL
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
54
Linux pour le Temps Réel
●
l’approche « noyau entièrement préemptible »
➢
➢
➢
➢
modifier le noyau pour que les tâches non temps réel et
dont les temps d’exécutions ne sont pas connus
n’interfèrent pas avec les tâches temps réel
complexe (le noyau est gros)
mais seuls le cœur du noyau et quelques pilotes doivent
être modifiés (travail d’experts)
patch PREEMPT_RT
Real Time Linux Wiki
✔
✔
✔
✔
➢
F. Touchard
prise en compte des interruptions par des threads noyaux
implémentation de l'héritage de priorité
remplacement des spinlocks par des mutex
mise en place de compteurs à haute précision pour exprimer
les délais et les échéances en millisecondes
approche généralement suffisante pour le temps réel mou
ou ferme
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
55
Linux pour le Temps Réel
●
approche co-noyau (RTLinux)
➢
➢
un micro-noyau temps réel intercepte les interruptions
matérielles et les traite prioritairement
les tâches temps réel sont exécutées dans l’espace noyau
sous forme de modules
Processe sutilisateurs
Processes temps réels



Librairies systèmes
pilotes
I/O
RT scheduler
accès direct h/w
F. Touchard
Introduction aux systèmes Temps Réels
Noyau Linux
Interrupts s/w
RT Kernel
I/O
Interrupts h/w
Systèmes d'exploitations pour le temps réel
56
Xenomai
●
approche co-noyau temps réel
➢
➢
F. Touchard
basé sur les spécifications ADEOS (Adaptive Domain
Environment for Operating Systems) de Karim Yaghmour
projet initialement créé pour faciliter le portage des
applications temps réel vers un RTOS de type Linux
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
57
Xenomai
●
abstraction des propriétés communes des RTOS traditionnels
➢ couche générique H/W (HAL) et S/W (SAL)
➢ « peaux » pour émuler les RTOS traditionnels
applications dans l’espace utilisateur
interface
interface appels
appels systèmes
systèmes Linux
Linux
VxWorks
VxWorks
RTAI
RTAI
VRTX
VRTX
POSIX
POSIX
...
...
applications dans
l’espace noyau
couche
couche générique
générique temps
temps réel
réel
(Xenomai
(Xenomai core)
core)
SAL/HAL
SAL/HAL
I-Pipe
I-Pipe
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
58
Interrupt Pipeline
●
pour organiser la distribution des interruptions de façon à
ce que le noyau Linux ne retarde pas leur prise en
compte par le RTOS
➢
➢
implémentation de ADEOS
organise un ensemble de domaines connectés par le
pipeline
✔
✔
partagent le même espace d’adresses
implémentés sous forme de module
interrupts
et traps
domaine de
priorité max
domaine
root
domaine de
priorité min
Noyau
Linux
F. Touchard
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
59
Interrupt Pipeline
●
distribution prioritisée des interruptions suivant le schéma
de "protection optimiste des interruptions" :
➢
un domaine peut passer en mode bloqué (stalled)
✔
✔
✔
➢
●
au déblocage, les interruptions accumulées sont traitées et
éventuellement passées aux domaines de priorité inférieure
les événements systèmes sont propagés par le même
pipeline abstrait
➢
➢
F. Touchard
les interruptions arrivantes ne sont plus distribuées aux
handlers du domaine
les interruptions arrivantes sont accumulées et ne sont plus
transmises aux domaines de priorité inférieure
les domaines de priorité supérieure continuent à recevoir les
interruptions et à les traiter
notifications synchrones d'exceptions (division par zéro,
accès mémoire invalide,...), d'actions exécutées par le
noyau Linux (pagination, ...)
ne peuvent pas être retardées, à l'inverse des interruptions
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
60
Xenomai Core
●
pour fournir toutes les ressources systèmes utilisées par
les peaux
➢
➢
●
constitué de :
➢
➢
➢
➢
➢
F. Touchard
briques génériques pouvant être spécialisées
groupées dans un module : le noyau Xenomai
un objet « thread temps réel » contrôlé par un
ordonnanceur temps réel (FIFO par niveau de priorité)
un objet générique « interruption »
un objet « allocateur de mémoire » ayant un temps de
réponse prédictible
un objet générique « synchronisation » dont sont dérivés
les sémaphores, mutexes, files de messages, etc...
un objet « gestion du temps »
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
61
peaux Xenomai
●
à partir des fonctions de Xenomai Core, plusieurs API ont
été développées
➢
➢
➢
➢
➢
➢
➢
➢
F. Touchard
POSIX (toutes les fonctions de la glibc)
VxWorks
pSOS+
VRTX
uiTRON
RTAI
« native »
RTDM (pour le développement de drivers temps réels)
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
62
Coexistence de Linux et Xenomai
interaction des tâches temps réel avec les tâches non
temps réel
● mécanisme du « real time shadowing »
●
➢
➢
➢
pour les tâches non temps réel qui deviennent temps réel
objet « RT shadow » attaché à la tâche qui peut être alors
ordonnancée par l’ordonnanceur de Xenomai
partage des structures task_struct (spécifique Linux) et
xnthread (spécifique Xenomai) par les ordonnanceurs
ordonnanceur
ordonnanceur
Linux
Linux
ordonnanceur
ordonnanceur
Xenomai
Xenomai
lien interne
struct
task_struct
F. Touchard
Introduction aux systèmes Temps Réels
struct
xnthread
Systèmes d'exploitations pour le temps réel
63
Coexistence de Linux et Xenomai
●
les threads temps réels peuvent s'exécuter
➢
➢
dans l'espace noyau sous forme de modules noyau
dans l'espace utilisateur (threads Xenomai)
à ne pas confondre avec les threads Linux classiques,
non temps réel
● les threads Xenomai peuvent s'exécuter
●
➢
➢
F. Touchard
dans le domaine de plus haute priorité du pipeline (mode
d'exécution "primaire")
dans l'espace Linux (mode d'exécution "secondaire"), mais
avec des temps de latence d'ordonnancement un peu plus
grands
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
64
Coexistence de Linux et Xenomai
●
pour que les threads Xenomai en mode secondaire
puissent être temps réel, il faut :
➢
un schéma de priorités commun pour le noyau temps réel
et le noyau Linux
✔
✔
✔
F. Touchard
si un thread Xenomai en mode primaire passe en mode
secondaire, le noyau Linux va hériter de sa priorité
un thread Xenomai en mode primaire ne va préempter un
thread en mode secondaire que si sa priorité effective est
supérieure
un thread Linux en mode SCHED_FIFO sera toujours
préempté par un thread en mode primaire et sera en
compétition avec les threads en mode secondaire
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
65
Coexistence de Linux et Xenomai
➢
des temps d'exécution prédictibles
✔
➢
➢
F. Touchard
blocage des interruptions destinées à Linux par un domaine
Adeos intermédiaire : le "bouclier à interruptions" (interrupt
shield), activé dès qu'un thread Xenomai tourne en mode
secondaire
un noyau Linux avec un ordonnancement à grain fin pour
les threads Xenomai en mode secondaire
la gestion des inversions de priorité
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
66
Coexistence de Linux et Xenomai
●
pipeline Xenomai
Interruptions
et traps
Xenomai
(primaire)
F. Touchard
Introduction aux systèmes Temps Réels
bouclier à
interruptions
Systèmes d'exploitations pour le temps réel
Linux
(secondaire)
67
Coexistence de Linux et Xenomai
●
propagation des interruptions
➢
le noyau temps réel de Xenomai reçoit en premier les
interruptions
✔
✔
✔
➢
➢
➢
quand il n'y a plus de threads Xenomai à exécuter, la CPU
est donnée au bouclier qui va les passer au noyau Linux s'il
est désactivé, ou les bloquer s'il est activé
2 modes de propagation pour Adeos, par domaine et par
interrupt (implicite ou explicite)
Xenomai utilise le mode explicite
✔
✔
F. Touchard
il les traite
il les marque pour être passés dans la suite du pipeline
quand le dernier traitant est terminé, Xenomai donne la CPU
au thread Xenomai de plus haute priorité
chaque traitant doit faire appel au service de propagation
pour toutes les interruptions prises en compte
si aucun traitant n'a été déclaré, l'interruption est
automatiquement passée au noyau Linux
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
68
RTDM
●
couche intermédiaire entre une application temps réel et
les services fournis par un pilote
➢
pilotes à protocole (communication par échange de
message)
✔
✔
➢
pilotes pour des périphériques nommés
✔
F. Touchard
réseaux temps réel
bus CAN
cf périphériques caractères
Introduction aux systèmes Temps Réels
Systèmes d'exploitations pour le temps réel
69
La norme POSIX
●
Portable Operating System Interface
●
pour aider à produire des codes portables sans trop
d'efforts
●
initié par l'IEEE et organisé par l'ISO
●
à partir d'UNIX, pour le C ANSI
●
différents standards pour différents problèmes
➢
➢
●
F. Touchard
POSIX.1b (ou POSIX.4) : extensions temps réel
POSIX.1c : extensions pour les threads
important : l'interface POSIX ne fournit pas un
environnement temps réel, mais uniquement des
interfaces qui peuvent être utilisées dans le cadre d'un
OS Temps Réel
Introduction aux systèmes temps réell
70
La norme POSIX
●
POSIX a été remplacé récemment par SUSV3 (Single
Unix Specification Version 3)
➢
SUSV3 inclut les différentes version de POSIX
✔
➢
F. Touchard
extensions Temps Réel : option RTS
je garderai les références à POSIX.1 et 4 pour bien
différencier les extensions temps réel
Introduction aux systèmes temps réell
71