Temps Réel AS24

publicité
Temps Réel
Barat Christian
2005-2006
Définitions
• On retrouve un ensemble de définitions
• James Martin dans Real-Time computer system
– Un calculateur temps réel peu être défini comme contrôlant son
environnement en recevant des informations, les traitant et
agissant en retournant les résultats suffisamment vite pour
affecter, modifier le fonctionnement de l’environnement à chaque
instant.
• Kaiser
– On dit qu’il y a traitement en temps réel lorsque le temps de
réponse à des interrogations, généralement aléatoires, est
soumis à des contraintes du système.
Définition
• On prendra cette définition:
– Un système temps réel est un système qui permet l’exécution de
tâches ayant des contraintes temporelles. Il doit garantir des
réponses à des stimuli avec des échéances fixées (contraintes
strictes) ou des temps de réponse bornés (contraintes relatives)
Les systèmes d’exploitation
Une machine informatique doit gérer ses différents organes : clavier,
écran, mémoire centrale, disque dur, etc…C’est le programme
de gestion de la machine appelé système d’exploitation qui
s’occupe de cela (Disk Operating System: gère les accès au
disque).
Exemples : MS-DOS, UNIX
1.
Système d’exploitation monoprocesseur, mono tâche:
Le système alloue le CPU (Central Processing Unit) à un seul
programme. Tant que celui-ci s’exécute aucune autre application ne
peut s’exécuter (MS-DOS).
Les systèmes d’exploitation
•
Système d’exploitation monoprocesseur, multitâche
–
Le système d’exploitation peut préempter le CPU au profit d’une
application en fonction de situations diverses. Le multitâche à pour
objectif d’exploiter le plus efficacement possible toutes les ressources
d’un système informatique. Exemples:
•
•
–
L’application se suspend elle-même pour attendre la fin d’une opération
E/S qu’elle a préalablement lancé. Le CPU est alloué à une application en
attente d’exécution.
Un évènement urgent nécessite un traitement immédiat se traduisant par
l’exécution d’un programme associé.
Systèmes d’exploitations : OS/2 (IBM), WINDOWS NT (Microsoft) ,
UNIX (ATT)
Les systèmes d’exploitation
• Système d’exploitation multiprocesseur, multitâche
– Les tâches sont exécutées respectivement sur des cartes CPU
distinctes. On a un parallélisme des activités. Cela implique une
coopération entre tâches : communication, synchronisation, partage des
ressources. D’où l’utilisation d’un bus système avec gestion multimaitres.
– Bus VME (Motorola), Multibus (Intel), MCA (IBM), EISA, PCI.
– On utilise un système d’exploitation de type UNIX ou des exécutif
multitâches temps réel de type (VRTX), RTC, A6MTR.
Systèmes d’exploitation
• Structuration d’un système informatique classique.
Application
Plate-forme
Professionnelle
Interface
HM
Biblio
Programmes
Gestion
fichiers
Base
Données
Messagerie
Gestion
mémoire
Services du système
d’exploitation
Noyau
Gestion
Objets
Gestion
Horloge
Ordonnanceur
Gestion
MV
Gestion IT
Gestion
Tâches
Pilotes
Sémaphore
matériel
Le multitâche
• But : Exploiter le plus efficacement possible toutes les
ressources d’un système informatique.
• Le système d’exploitation doit mettre en œuvre les
règles de possession et de partage de ressources,
définir les compétiteur (prg en mémoire centrale) et les
contrôler tout au long de leur exécution.
• Plusieurs prgs coexistent en mémoire centrale et sont
exécuté alternativement dans le temps par l’unité
centrale.
La tache
• Une tache comporte en général 3 zones:
– Une zone de programme contenant les instructions et certaines
constantes (accessible en R).
– Une zone de données contenant les données variables et les
données constantes ou initialisées (accessible en R/W).
– Une zone de pile permettant de ranger les informations
temporaires (accessible R/W).
• Contexte de la tache : état des registre du processeur,
l’état des pointeurs (programme, données, pile), le nom,
la priorité, les droits d’accès, identificateur de l’état de la
tache.
Zone
données
Zone
Pile
Zone
Programme
ETATS DES TACHES
• Une tache est une unité logicielle dynamique : le noyau la place dans un
des 4 états possibles.
• Active : La tache est en cours d’exécution (1 seule, priorité + grande)
• Prête : Elle attend le processeur (ll peut y en avoir plusieurs)
• Suspendue : Attente d’un événement pour passer dans l’état prêt.
• Inactive: Elle ne participe plus à l’activité du système.
• La gestion des taches par l’Ordonnanceur s’effectue par l’intermédiaire
d’un automate logiciel.
Automate logiciel
active
Terminer
inactive
Démarrer
tâche
Attente
condition
sélection
attente
préemption
Arrêt
tâche
Occurrence
condition
Prêt
Arrêt
tâche
Communication et synchronisation
• En environnement multitâche, les processus coopèrent en vue de la
réalisation d’une activité commune.
– Coopération temporelle : notion de blocage et déblocage
– Coopération spatiale : échange d’informations
• 4 catégories de relations :
–
–
–
–
Processus indépendants
Processus ayant accès à des ressources communes
Processus liés
Processus à contrainte de temps
Partage de ressources
• Le Pb de partage de ressources est crucial : c’est un
problème d’ordonnancement de taches.
• Exemple :
– Tache P1 :
• Prendre la ressource R2 et l’occuper
• Prendre la ressource R1 quand P2 la libère
– Tache P2
• Prendre la ressource R1 et l’occuper
• Prendre la ressource R2 quand P1 la libère
• Inter blocage
Condition d’inter blocage
• [Coffman71] :
– Les ressources ne sont pas partageables
– Il n’est pas possible de préempter un
processus en possession de la ressource à
un instant donné.
– Un processus en possession d’un ressource
peut faire une requête d’une autre ressource.
– Il existe une file de n processus pour laquelle
le processus Pi attend la ressource allouée à
Pi+1, Pn étant en attente de Po.
L’exclusion mutuelle
•
Deux processus en phase d’impression sont en
exclusion mutuelles vis-à-vis de l’imprimante.
L’exclusion mutuelle de 2 processus/ressource
partageable suppose une phase pendant laquelle un
seul processus est en possession de la ressource.
•
–
•
•
Section critique (dans le code c’est la région critique)
La région critique correspond à une zone de code
dans laquelle il ne peut y avoir de prise en main par
l’Ordonnanceur du système pour l’exécution d’une
tache plus prioritaire.
Solutions : Sémaphore/Evenements
Sémaphore
• Objet jouant le rôle de distributeur de tickets
– Opération P (Prendre) : demande de ticket, le
processus est bloqué jusqu’à ce qu’un ticket soit
disponible.
– Opération V (Vendre) : signale la disponibilité d’un
ticket, parmi tout les processus en attente d’un ticket
un processus est chois et réveillé.
• Peut être utilisé pour la synchronisation ou
l’exclusion mutuelle.
Synchronisation par sémaphore
• Valeur initiale nulle
• Exemple : P2 édite
les résultats de P1
P2
P(S_P2)
V(S_P2)
P(S_P1)
affiche
traitement
P1
V(S_P1)
Processus
P1
Début
//traitement
V(S_P2)
/*..*/
P(S_P1)
/*..*/
Fin
Processus
P2
Début
/*..*/
P(S_P2)
/*affiche*/
V(S_P1)
/*..*/
Fin
Exclusion mutuelle par sémaphore
• Valeur initiale 1
• On encadre la section
critique
Processus n
Début
/*..*/
P(Sémaphore)
//section critique
V(Sémaphore)
/*..*/
Fin
Les événements
• Autre méthode de synchronisation
• Signal logiciel asynchrone/processus récepteur
• Représenté par une variable booléenne
– Ev = 0 : Non arrivé
– Ev = 1 : Arrivé
• Trois opérations :
– Positionnement de l’événement (Ev = 1) : SET
– Mise à zéro de l’événement (Ev = 0) : RESET
– Attente de l’événement (Mise dans la file d’attente) : WAIT
Les files d’attentes
• La manière de gérer les files de processus à une grande
incidence sur les performances d’un système.
• LIFO (pile) ou FIFO (liste, file, queue).
Tableau pointeur
sur les différentes
files
Processus en cours
Ordonnanceur
File des processus prêts
File des processus en attente
d’événement
File des processus en
Attente sur sémaphore
Les files d’attente
• Les processus actif sont chaînés par priorité. Cette file est
susceptible d’être modifiée dynamiquement au cours du temps en
fct de la stratégie adoptée.
• La file des processus en attente d’événement est statique (ne
dépend pas des priorités). On peut avoir une file d’attente distincte à
chaque type d’événements.
• Les files d’attente sur sémaphore (mutex) sont généralement gérés
par ordre d’arrivée.
Ordonnancement
• L’Ordonnanceur sélectionne les taches.
C’est le chef d’orchestre. Il est invoqué
chaque fois qu’une modification intervient
sur l’ensemble des taches actives.
– Il alloue le processeur à une tache parmi N
taches éligibles.
– Assure la gestion des commutations de
taches de l’état bloqué à l’état éligible.
Le dispatcher/répartiteur
• Il réalise l’élection effective d’un processus et e
changement de contexte associé.
Ordonnanceur
Processeur
Processus élu
dispatcher
File d’attente
Des processus bloqués
File d’attente des
processus éligibles
Commutation des taches
• Commutation contexte différent de commutation des taches:
• Commutation de contexte
– Sauvegarde de l’état des registres du processus courant
– Restauration de l’état des registres relatif au nouveau processus
– Effectuées lors d’un appel noyau ou lors de l’occurrence d’une
interruption
• Commutation des taches
– Abandon du traitement de la tache en cours pour le traitement d’une
autre tache.
– Provoquée par la demande explicite de la tache en cours (attente,..)
– Provoquée sur décision de l’Ordonnanceur (tache + prioritaire active).
– Provoquée par la nécessité de réponse à un phénomène externe.
Commutation de tache et de
contexte
Recherche de la
Tache de plus
Haute priorité
Sauvegarde
Contexte tache 1
Tache 1
Mise en sommeil
Tache 1
Restauration
Contexte tache 2
Tache 2
Les critères de sélection
• A l’Ordonnanceur est associé une technique de gestion des
différentes taches avec des contraintes :
–
–
–
–
Garantir à chaque tache un temps d’allocation donné
Respecter un ordre de priorité entre tache
Respecter un temps de réponse donné
Annuler de manière préemptive une tache qui monopolise le processeur
• Généralement l’invocation de l’Ordonnanceur s’effectue sur :
– Mise en attente ou réveil d’une tache
– Changement de priorité d’une tache
– Réquisition du processeur au profit d’une tache plus prioritaire
Ordonnancement
• Ordonnancement par file descripteurs :
– Les taches actives sont organisées en files doublement
chaînées par l’intermédiaire de leur descripteur.
Tableau pointeur
sur les différentes
files
Ordonnanceur
Le temps partagé/time sharing
• Ordonnanceur préemptif
• Chaque processus est interrompu toute les x
millisecondes par le système (horloge temps réelle).
• Round robin : s’effectue sur une unique file d’attente de
processus eligiblent.
• Le choix de l’unité de temps est primordial pour une
bonne optimisation des temps d’attente et/ou
d’occupation de l’unité centrale.
Choix du quantum de temps
• Si temps trop court :
– Overhead (temps du à la commutation des taches)
• Si temps trop long
– Temps alloué à des processus pour rien.
• Files multiples:
Quantum Q
P3 … P2 P1 Pn
sélection
processeur
Quantum 2Q
P7 … P4 P6 Pi
arrivées
Parcours : F1,F1,F2,F1,F1,F2
Approche temps réel
•
•
Multitâche : Round robin ou file
multiple OK
Temps réel : Assurer un
déterminisme entre 2 utilisations
successives d’un processeur par
un processus.
– Associer une priorité au
processus
priorité
Processus
De priorité 30
P3 --
P2 P1 Pn
41
12 8
1
sélection
processeur
Contraintes temps réel
• Un système temps réel doit induire, de par ses caractéristiques la
mise en œuvre d’un certain nombre d’éléments, lui permettant de
répondre aux critères temps réels. Cela impose des contraintes sur
le système, le matériel et les logiciels.
• Contraintes Système : datation, sûreté et sécurité de
fonctionnement. Il faut minimiser l’effet de défaillance en exigeant
que l’arrêt d’un processus ne doit pas traduire par l’arrêt de tous les
processus présents dans le système.
• Contraintes matériel : horloge temps réel, mécanisme d’interruption,
instruction spécialisées, interfaces adaptés aux processus mis en
jeu, un mécanisme de priorité d’interruption en tenant compte des
différentes cadences et délais.
• Contraintes logicielles : mise en œuvre aisée de la gestion des
relations entre processus (instructions spécialisées)
Le facteur temps
• Le déterminisme (délai) : impose le traitement
l’exécution dans un temps limite définit.
• Un exécutif temps réel sera dit déterministe s’il est
indépendant de la charge du système (nb de taches
actives) et si l’on peut répondre le plus vite possible à
une requête externe et la traiter dans un temps
indépendant de l’environnement extérieur.
• La préemption est l’un des outils mise en œuvre pour
assurer l’aspect déterministe d’un système. Cela permet
de prendre en compte l’urgence de traitement.
Multitâche et temps réel
• Un exécutif temps réel reprend tout ce qui caractérise un
système multitache :
– Exécution concurrente de taches
– Synchronisation et communication
• Temps réel implique principalement l’adoption de
stratégie différentes dans le cadre des traitements:
– Déterminisme
– Urgence
• Multitâche = optimisation du processeur
• Temps réel = déterminisme des actions
Idées reçues
• Toute application temps réel est multitâche:
– Est-ce que les contraintes de temps sont respectées.
• Tout exécutif temps réel réalise des traitements en
temps réel quelque soit le domaine d’application
• On évalue la puissance d’un exécutif temps réel sur
la base de ses temps critiques
• Dans une application temps réel, c’est l’aspect
déterministe qui compte le plus
Références
•
Le temps réel en milieu industriel : concepts, environnements, multitâches
– A. Dorseuil, P. Pillot , Editions DUNOD 1991
•
Gestion des processus industriels temps réel : Des interruptions
électroniques aux exécutifs multitâches.
– J.J. Montois, ellipses/édition marketing S.A. 1999
•
Ordonnancement temps réel : cours et exercices corrigés
– F. Cottet, J. Delacroix, C. Kaiser, Z. Mammeri, Edition Hermes Sciences
Publications, 2000
•
Meeting Deadlines in Hard Real-Time Systems: The Rate Monotonic
Approach
– L. P. Briand, D. M. Roy, Editions IEEE Computer Society, 1999
Téléchargement