Académique Documents
Professionnel Documents
Culture Documents
Bruno Hérissé
bruno.herisse@onera.fr
2019 – 2020
1/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Programme
Fichiers et annales :
http://herisse.bruno.free.fr/files/TempsReel/
2/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Plan
1 Définition
3 Introduction à Xenomai
5 Réseaux de Petri
3/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Plan
1 Définition
3 Introduction à Xenomai
5 Réseaux de Petri
4/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
5/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Transport
Aérospatiale
Ferroviaire
Automobile
Communication et Multimédia
Téléphone mobile
Décodeur TNT
Streaming
Système de production industriel : centrale nucléaire, chaîne de
montage, usine chimique
Robotique
etc.
6/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
6/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
7/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
7/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Plan
1 Définition
3 Introduction à Xenomai
5 Réseaux de Petri
8/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
9/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
10/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
10/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
10/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
11/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
12/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Dans les autres cas (Di < Ti , ri 6= rj , etc.), nécessité de faire une analyse
détaillée (étude du chronogramme, analyse mathématique, etc.) pour
conclure quant à l’ordonnançabilité.
13/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Des contraintes :
Relations de précédence entre les tâches
Partage de ressources
Tâches non périodiques
14/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Des contraintes :
Relations de précédence entre les tâches
Partage de ressources
Tâches non périodiques
14/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Les enjeux :
Empêcher les interblocages
Borner les inversions de priorité
Éviter les chaînes de blocage
Les solutions :
Priority Inheritance Protocol (PIP)
Priority Ceiling Emulation (PCE)
ou Ceiling Locking, ou Priority Protect Protocol, ou Highest Locker’s
Priority Protocol.
Priority Ceiling Protocol (PCP)
15/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Les enjeux :
Empêcher les interblocages
Borner les inversions de priorité
Éviter les chaînes de blocage
Les solutions :
Priority Inheritance Protocol (PIP)
Priority Ceiling Emulation (PCE)
ou Ceiling Locking, ou Priority Protect Protocol, ou Highest Locker’s
Priority Protocol.
Priority Ceiling Protocol (PCP)
15/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
16/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
17/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
18/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Les enjeux :
Respect des échéances des tâches périodiques
Minimiser le temps de réponse des tâches apériodiques
Les solutions :
Background Scheduling (BS) : traitement en tâche de fond à priorité
faible
Ne permet pas de minimiser le temps de réponse des tâches apériodiques.
Serveur de tâches sporadiques
Serveur synchrone (priorité forte) : tâche périodique avec une certaine
période d’activation et une capacité maximale par période.
Serveur différé (priorité forte) : tâche périodique avec possibilité d’utilisation
en différé de la capacité.
Serveur sporadique (priorité forte) : la capacité est réallouée
périodiquement.
19/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Les enjeux :
Respect des échéances des tâches périodiques
Minimiser le temps de réponse des tâches apériodiques
Les solutions :
Background Scheduling (BS) : traitement en tâche de fond à priorité
faible
Ne permet pas de minimiser le temps de réponse des tâches apériodiques.
Serveur de tâches sporadiques
Serveur synchrone (priorité forte) : tâche périodique avec une certaine
période d’activation et une capacité maximale par période.
Serveur différé (priorité forte) : tâche périodique avec possibilité d’utilisation
en différé de la capacité.
Serveur sporadique (priorité forte) : la capacité est réallouée
périodiquement.
19/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Plan
1 Définition
3 Introduction à Xenomai
5 Réseaux de Petri
20/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Tornado, VxWorks
Windows CE
QNX
LynxOS
RT Linux
FreeRTOS
RTX
RTAI
Xenomai
Etc.
21/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Performances
Outils disponibles
Prix
Accès au code source
Environnement de développement (développement croisé machine hôte
/ machine cible, outils de développement)
Cibles possibles (x86, ARM, etc.)
Etc.
22/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Un OS : Linux
23/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Un OS : Linux
Matériel
Ecran, Imprimante, carte son,
carte graphique, réseau, etc.
Noyau Linux
Espace utilisateur
Bibliothèques, API
Programmes utilisateurs
24/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
25/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
26/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Matériel
Ecran, Imprimante, carte son,
carte graphique, réseau, etc.
Cohabitation Linux /
processus temps réel
Espace utilisateur
Bibliothèques, API
Programmes utilisateurs
27/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Linux et Xenomai
28/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
29/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Créer une application temps réel dans l’espace noyau sous Xenomai
2.6
30/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
#include <linux/module.h>
MODULE_LICENSE("GPL");
#include <rtdk.h>
#include <native/task.h>
#include <native/timer.h>
#include ...
31/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Définitions générales
#include <linux/module.h>
MODULE_LICENSE("GPL");
#include <rtdk.h>
#include <native/task.h>
#include <native/timer.h>
#define HIGHEST_PRIO 99
#define PERIOD 1000000000
#define N_LOOP 10
#define ...
32/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
#include <linux/module.h>
MODULE_LICENSE("GPL");
#include <rtdk.h>
#include <native/task.h>
#include <native/timer.h>
#define HIGHEST_PRIO 99
#define PERIOD 1000000000
#define N_LOOP 10
RT_TASK tache_toto;
33/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
while(loop--){
rt_printf("Hello World ! \n");
}
34/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
int init_module(void){
...
...
return 0;
}
35/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
void cleanup_module(void){
rt_task_delete(&tache_toto);
...
36/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Exécution de l’application
37/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
38/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
39/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Dans la tâche
40/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Suspension
rt_task_suspend(&tache_toto);
rt_task_join(&tache_toto);
rt_task_resume(&tache_toto);
Terminaison
rt_task_delete(&tache_toto);
41/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Gérer le temps
rt_timer_set_mode(TM_ONESHOT);
42/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Gérer le temps
Récupération du temps
Conversion
Endormir la tâche
rt_task_sleep(duree); // en "ticks"
rt_task_sleep_until(date); // en "ticks"
rt_timer_spin(duree); // charge CPU en ns
43/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
rt_task_set_priority(&tache_toto, priorite);
Autres opérations
44/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RT_SEM sem_toto;
rt_sem_create(&sem_toto, // pointeur sur le sémaphore
"SEMTOTO", // nom du sémaphore
val, // valeur initiale ≥ 0
mode // options
);
rt_sem_p(&sem_toto, TM_INFINITE);
Restituer le sémaphore
rt_sem_v(&sem_toto);
45/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Destruction
rt_sem_delete(&sem_toto);
Variantes asynchrones
46/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RT_MUTEX mut_toto;
rt_mutex_create(&mut_toto, // pointeur sur le mutex
"MUTTOTO", // nom du mutex
);
rt_mutex_acquire(&mut_toto, TM_INFINITE);
Restituer la ressource
rt_mutex_release(&mut_toto);
47/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Destruction
rt_mutex_delete(&mut_toto);
Variantes
48/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RT_QUEUE mbx_toto;
rt_queue_create(&mbx_toto, // pointeur sur la BAL
"MBXTOTO", // nom de la boîte aux lettres
taille, // taille de la boîte aux lettres
limite, // nombre max de messages dans la
BAL
mode // options
);
Envoyer un message
49/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Destruction
rt_queue_delete(&mbx_toto);
Variantes
50/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RT_PIPE pipe_toto;
rt_pipe_create(&pipe_toto, // pointeur sur la FIFO
"PIPETOTO", // nom de la FIFO
numero, // numero de la FIFO
taille // taille de la FIFO
);
Destruction
rt_pipe_delete(&pipe_toto);
51/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
52/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RT_TASK_MCB mcb_s ;
rt_task_send(&tache_cible, &mcb_s, NULL, TM_INFINITE);
RT_TASK_MCB mcb_r ;
int flowid = rt_task_receive(&mcb_r, TM_INFINITE);
rt_task_reply(flowid, NULL);
+Variantes
53/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
#define IT_CLAVIER 1
RT_INTR intr_toto;
void isr_toto(void *args);
rt_intr_create(&intr_toto, "INTRTOTO", IT_CLAVIER,
&isr_toto, NULL, mode);
Fonctions associées
54/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Pilote de périphérique
lecture des fichiers /dev/nom (sdb1, rtp0, ...)
utiliser les fonctions open, close, read, write
Accès direct aux ports E/S
#include <sys/io.h>
outb(valeur,adresse);
valeur = inb(adresse);
Et leurs variantes...
55/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Plan
1 Définition
3 Introduction à Xenomai
5 Réseaux de Petri
56/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
57/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Aspects de modélisation
58/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Démarches de modélisation
59/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Éléments de conception
61/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Plan
1 Définition
3 Introduction à Xenomai
5 Réseaux de Petri
62/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Présentation
63/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
On considère un poste de S1
traitement. Les pièces brutes sont
déposées entrée du poste dans un
stock (S1). Deux machines (M1 et
M2) peuvent prendre des pièces
dans ce stock et les traiter. Chaque
M1 M2
pièce traitée par une machine est
assemblée avec une pièce traitée
par l’autre avant d’être déposée
dans le stock de sortie (S2).
64/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
On considère un poste de S1
traitement. Les pièces brutes sont
déposées entrée du poste dans un
stock (S1). Deux machines (M1 et
M2) peuvent prendre des pièces
dans ce stock et les traiter. Chaque
M1 M2
pièce traitée par une machine est
assemblée avec une pièce traitée
par l’autre avant d’être déposée
dans le stock de sortie (S2).
64/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Définition
65/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Équation fondamentale
66/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
p1
t1 t2
A =? p5 p2 p3
t3
p4
67/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Exemples de structures
68/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Propriétés
Réseau vivant : un réseau est vivant si toute transition peut être incluse
dans une séquence de franchissement à partir de tout marquage
consécutif au marquage initial
Contre exemple...
69/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Propriétés
70/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Propriétés
71/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
72/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
73/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Analyse algébrique
Rappel : Mk = M0 + Auk −1
Un P-invariant est un vecteur x d’entiers positifs tel que x> A = 0, i.e.
x> Mk = x> M0
x représente un ensemble de places pour lequel le marquage se
conserve globalement
Permet de vérifier que le marquage d’une place reste borné
74/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Analyse algébrique
Exemple de P-invariant...
75/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Analyse algébrique
76/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Analyse algébrique
Exemple de T-invariant...
77/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP généralisés
78/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP généralisés
79/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP colorés
80/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP colorés
81/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP P-temporisés
RdP P-temporisés
Temporisation associée à chaque place
Marquage : jetons disponibles (prêts) ou non (endormis)
Comportement
Franchissement possible si jeton disponible
Cas particulier : transitions franchies dès qu’elles sont franchissables
(vitesse maximum de franchissement)
82/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP P-temporisés
83/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP T-temporisés
RdP T-temporisés
Temporisation associée à chaque transition
Marquage : jetons libres ou réservés (temporisation associée)
Comportement
Franchissement si jeton réservé et temporisation arrivée à terme
84/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP T-temporisés
85/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
RdP continus
86/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Exemple du distributeur
Exemple du TD1
87/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Du RdP au Grafcet
88/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri
Du RdP au Grafcet
Exemple...
89/89