Vous êtes sur la page 1sur 100

Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Informatique sûre et temps réel


Master SPI
M2 Informatique Industrielle
&
M2 Ingénierie de l’Informatique Industrielle et de l’Image

Bruno Hérissé
bruno.herisse@onera.fr

ONERA – The French Aerospace Lab


Palaiseau, France

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

5 séances de cours : 18h


3 séances de TP (Linux, Xenomai, Langage C) : 12h
Encadrés par Florian Dietrich (florian.dietrich@onera.fr)
1 séance d’examen : 2h

Note Finale : 40% de la note de TP + 60% de la note d’examen.

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

2 Ordonnancement dans un système multitâches

3 Introduction à Xenomai

4 Éléments de spécification et conception des systèmes

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

2 Ordonnancement dans un système multitâches

3 Introduction à Xenomai

4 Éléments de spécification et conception des systèmes

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

Que signifie temps réel ?

Ne pas confondre avec rapide !


Un système temps réel est un système capable de donner un résultat
correct dans un délai imparti. Respect de contraintes temporelles.

5/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Exemples de systèmes temps réel

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

Exemples de systèmes temps réel

Transport (temps réel dur)


Aérospatiale
Ferroviaire
Automobile
Communication et Multimédia (temps réel souple)
Téléphone mobile
Décodeur TNT
Streaming
Système de production industriel : centrale nucléaire, chaîne de
montage, usine chimique (temps réel dur)
Robotique (temps réel dur)
etc.

6/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Modes de fonctionnement d’un système temps réel

Scrutation (ou mode bouclé)


Interruption
Multitâche mono-processeur (basé sur un système d’exploitation temps
réel)
Multitâche multi-processeur (avec mémoires partagées)

7/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Modes de fonctionnement d’un système temps réel

Scrutation (ou mode bouclé)


Interruption
Multitâche mono-processeur (basé sur un système d’exploitation
temps réel)
Multitâche multi-processeur (avec mémoires partagées)

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

2 Ordonnancement dans un système multitâches

3 Introduction à Xenomai

4 Éléments de spécification et conception des systèmes

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

Les états d’une tâche

9/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Ordonnancement d’un système multitâche

L’algorithme d’ordonnancement décide quelle tâche doit être exécutée à


chaque instant
Une séquence de tâches est retournée par l’algorithme
L’ordonnanceur est une tâche chargée d’appliquer cette séquence

Différents types d’alogrithmes


À priorité statique et à priorité dynamique
En ligne et hors ligne
Préemptifs et non préemptifs

10/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Ordonnancement d’un système multitâche

L’algorithme d’ordonnancement décide quelle tâche doit être exécutée à


chaque instant
Une séquence de tâches est retournée par l’algorithme
L’ordonnanceur est une tâche chargée d’appliquer cette séquence

Différents types d’alogrithmes


À priorité statique et à priorité dynamique
En ligne et hors ligne
Préemptifs et non préemptifs

10/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Ordonnancement d’un système multitâche

L’algorithme d’ordonnancement décide quelle tâche doit être exécutée à


chaque instant
Une séquence de tâches est retournée par l’algorithme
L’ordonnanceur est une tâche chargée d’appliquer cette séquence

Différents types d’alogrithmes


À priorité statique et à priorité dynamique
En ligne et hors ligne
Préemptifs et non préemptifs

10/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Ordonnancement de tâches périodiques indépendantes : définitions

On considère un jeu de n tâches J = τi {ri , Ci , Di , Ti }i=1...n avec


Ti : période de la tâche τi entre chaque activation,
Di : échéance relative de la tâche τi après chaque activation,
Ci : charge (durée de calcul maximale) de la tâche τi à chaque
activation,
ri : date de première activation de la tâche τi .

On définit également la marge li (t) (laxity) d’une tâche :


li (t) = di (t) − ci (t) − t.
où, à l’instant t, di (t) est la date de la prochaine échéance et ci (t) est la
charge restante (différence entre la charge de calcul totale Ci et la charge de
calcul déjà effectuée par la tâche depuis sa dernière activation).

11/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Principaux algorithmes d’ordonnancement des tâches périodiques


indépendantes

Rate Monotonic Scheduling (RMS) : priorité (statique) à la tâche de


période la plus faible
L’ordre de priorité est lié à l’ordre des périodes Ti .
Deadline Monotonic Scheduling (DMS) : priorité (statique) à la tâche
d’échéance relative la plus faible
L’ordre de priorité est lié à l’ordre des échéances relatives Di .
Earliest Deadline First (EDF) : priorité (dynamique) au travail le plus
urgent
L’ordre de priorité est lié à l’ordre des dates d’échéances di (t).
Least Laxity First (LLF) : priorité (dynamique) à la marge la plus faible
L’ordre de priorité est lié à l’ordre des marges li (t).

12/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Propriétés des algorithmes d’ordonnancement des tâches périodiques


indépendantes

On définit la charge totale du processeur par U = ni=1 CT i . Si le jeu de


P
i
tâches J est ordonnançable, alors U ≤ 1 (condition nécessaire).
Si les échéances sont sur requête (Ti = Di , ∀i) et que les dates d’activation
sont identiques (ri = rj , ∀(i, j)) :
RMS et DMS :
Si U ≤ n 21/n − 1 , alors le jeu de tâches J est ordonnançable (condition

suffisante).
RMS :  
Qn Ci
Si i=1 1+ Ti
≤ 2, alors le jeu de tâches J est ordonnançable (condition
dite hyperbolique meilleure que la précédente).
EDF et LLF :
le jeu de tâches J est ordonnançable si, et seulement si, U ≤ 1 (condition
nécessaire et suffisante).

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

Modèles de tâches avec d’autres contraintes

Des contraintes :
Relations de précédence entre les tâches
Partage de ressources
Tâches non périodiques

Des outils pour réaliser ces contraintes :


Verrous (exclusions mutuelles)
Sémaphores
Boites aux lettres

14/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Modèles de tâches avec d’autres contraintes

Des contraintes :
Relations de précédence entre les tâches
Partage de ressources
Tâches non périodiques

Des outils pour réaliser ces contraintes :


Verrous (exclusions mutuelles)
Sémaphores
Boites aux lettres

14/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Gestion du partage de ressources

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

Gestion du partage de ressources

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

Gestion du partage de ressources

Priority Inheritance Protocol (PIP)


Héritage de priorité : si une τ1 demande l’accès à une ressource déjà
utilisée par une tâche τ2 moins prioritaire, alors τ2 récupère
temporairement la priorité de la tâche τ1 (le temps de libérer la
ressource).
Transitivité : si τ3 bloque τ2 et que τ2 bloque τ1 , alors τ3 hérite également
de la priorité de τ1 .
Lorsque la ressource est disponible, elle est allouée à la tâche la plus
prioritaire qui est en attente de cette ressource.

Avantage : limite les inversions de priorité, très simple à implémenter (et


donc très courant).
Inconvénient : n’empêche pas les chaînes de blocage et les
interblocages

16/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Gestion du partage de ressources

Priority Ceiling Emulation (PCE)


Chaque ressource possède une priorité plafond (valeur statique définie
au départ).
Une tâche accédant à une ressource récupère temporairement cette
priorité plafond.

Avantage : très simple à implémenter.


Inconvénient : peut empêcher l’exécution d’une tâche de priorité plus
élevée.

17/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Gestion du partage de ressources

Priority Ceiling Protocol (PCP)


Chaque ressource possède une priorité plafond (valeur statique définie
au départ).
Une tâche ne peut accéder à une ressource que si sa priorité est
supérieure (strictement) à toutes les priorités plafond des ressources en
cours d’utilisation.
le PCP implémente l’héritage de priorité comme pour le PIP, avec la
transitivité.

Avantage : répond à tous les enjeux.


Inconvénient : plus difficile à implémenter.

18/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Présence de tâches apériodiques (ou sporadiques)

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

Présence de tâches apériodiques (ou sporadiques)

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

2 Ordonnancement dans un système multitâches

3 Introduction à Xenomai

4 Éléments de spécification et conception des systèmes

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

Quelques RTOS (Real Time OS)

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

Choix d’un RTOS

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

Un système d’exploitation libre


Gère les E/S Standards (Disque, IHM, Réseaux)
Multitâche

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

Gestion des processus


Gestion des fichiers
Gestion des modules
Protocoles de communication
Pilotes
Appels système
etc.

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

Les modules sous Linux = modularité

Un module est un morceau de code permettant d’ajouter des


fonctionnalités au noyau (pilotes de périphériques matériels, etc.)
On peut charger ou décharger un module sans recompiler le noyau ou
redémarrer le système
Ils peuvent utiliser toutes les fonctionnalités du noyau
Permet l’ajout ponctuel de drivers ⇒ optimisation de la mémoire
occupée par le noyau

25/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Linux n’est pas temps réel

Le Linux standard n’est pas un système déterministe


Processus
Date de réveil non garantie
Ordonnanceur Round-Robin (RR) : répartition équitable du temps
d’exécution entre tâches
noyau non préempté
Mémoire
Swap sur la Ram
Swap sur les processus
Interruptions dévalidées par le noyau

26/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

OS temps réel : RT Linux, RTAI, Xenomai 2, etc.

Matériel
Ecran, Imprimante, carte son,
carte graphique, réseau, etc.

Noyau temps réel (Xenomai)

Ajout d’un micro-noyau Ordonnanceur

Linux en tâche de fond


non prioritaire Tâche tps. réel Tâche tps. réel Noyau Linux

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

Linux reste inchangé


Séparation du temps réel et du non temps réel
Les tâches temps réel ne peuvent (théoriquement) pas faire d’appel système
Communication possible avec les tâches non temps réel (lecture/écriture
mémoire, files d’attente temps réel)
La machine hôte est également la machine cible

28/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Environnement de développement de Xenomai

Évolutions permanentes (Xenomai 2 → Xenomai 3)


Des outils de mise au point
Outils de trace : Linux Trace Toolkit (équivalent à WindView sur VxWorks)
Exécution dans l’espace noyau (seulement pour Xenomai 2)
Exécution dans l’espace utilisateur : mode primaire (temps réel dur) et mode
secondaire (géré par Linux)
Accès aux outils de débogage
Les processus Linux peuvent utiliser l’API Xenomai
Performances moins bonnes mais acceptables pour la plupart des applications
API native mais supporte d’autres API (les skins) : POSIX, VxWorks,
pSOS+, VRTX, uITRON, RTAI
Bibliothèque RTDM (Real Time Driver Model) pour l’écriture de pilotes
de périphériques temps réel

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

Installation de Xenomai en modifiant le noyau


“Patcher” Linux
Compiler le nouveau noyau
Installer les modules
Écrire l’application temps réel sous forme d’un module
Contient les tâches temps réel
Est construit de façon à être connecté au noyau (kernel space)
Exécuter l’application
Compilation des modules applicatifs (toto.c ⇒ toto.ko)
Chargement des modules spécifiques Xenomai (si besoin)
Chargement des modules applicatifs (toto.ko)

30/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Développement d’un module Xenomai avec l’API native (version 2.6)

Inclure les bibliothèques

#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éveloppement d’un module Xenomai avec l’API native (version 2.6)

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

Développement d’un module Xenomai avec l’API native (version 2.6)

Déclarations identificateurs de tâches, sémaphores, etc.

#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

Développement d’un module Xenomai avec l’API native (version 2.6)

Code exécuté par les différentes tâches (exemple)

void code_toto(void *arg){

static int loop = N_LOOP;

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

Développement d’un module Xenomai avec l’API native (version 2.6)

Fonction de lancement du processus temps réel

int init_module(void){

...

rt_task_spawn(&tache_toto, "toto", 0, HIGHEST_PRIO,


T_FPU|T_CPU(0), &code_toto, NULL);

...

return 0;
}

35/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Développement d’un module Xenomai avec l’API native (version 2.6)

Fonction d’arrêt du processus temps réel

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

Compiler le module à partir de toto.c (makefile)


Charger le module (en plus des autres modules !)
> insmod toto.ko
Observer le résultat avec la fonction dmesg
> dmesg
Hello World !
Hello World !
Hello World !
Hello World !
Hello World !
Hello World !
Hello World !
Hello World !
Hello World !
Hello World !
Décharger le module (en plus des autres modules !)
> rmmod toto

37/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Les modules de Xenomai

Les modules de l’API native de Xenomai :


task : gestion des tâches
timer : gestion du temps
sem : gestion des sémaphores
mutex : gestion des exclusions mutuelles
queue : gestion des boîtes aux lettres
pipe : gestion des messages par FIFO
intr : gestion des interruptions
etc.
Autres modules utiles :
rtdk : gestion des affichages (rt_printf, etc.)
etc.

38/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Créer une tâche

Création et démarrage de la tâche dans la fonction init_module

rt_task_spawn(&tache_toto, // pointeur sur la tâche


"TASKTOTO", // nom de la tâche
STACK_SIZE, // taille de la pile d’exécution
PRIORITE, // 99 est la plus haute priorité, 0 la plus basse
mode, // mode de création de la tâche (options)
&code_toto, // pointeur de la fonction à exécuter
args // arguments à la fonction
);

39/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Rendre une tâche périodique

Dans la fonction init_module ou dans la tâche directement

rt_task_set_periodic(&tache_toto, // pointeur sur la tâche


start, // date de démarrage
periode // période de la tâche
);

Dans la tâche

rt_task_wait_period(&ov); // attendre la fin de la période

40/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Suspendre, reprendre, terminer une tâche

Suspension

rt_task_suspend(&tache_toto);

Attente de la fin d’une tâche

rt_task_join(&tache_toto);

Reprise ou déclenchement d’une tâche non périodique

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

Mode qui n’utilise pas de base de temps (dans init_module)

rt_timer_set_mode(TM_ONESHOT);

Mode qui utilise une base de temps (dans init_module)

rt_timer_set_mode(nstick); // nstick en nanosecondes

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

rt_timer_tsc(); // en unités de compte


rt_timer_read(); // en "ticks" (= ns si TM_ONESHOT)

Conversion

SRTIME tuc, tns, ttick;


tuc = rt_timer_ns2tsc(tns);
tns = rt_timer_tsc2ns(tuc);
ttick = rt_timer_ns2tick(tns);
tns = rt_timer_tick2ns(ttick);

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

Ordonnancement et opérations sur les tâches

Priorité fixe de 0 (priorité basse) à 99 (priorité haute)

rt_task_set_priority(&tache_toto, priorite);

Autres opérations

rt_task_self(); // récupérer le pointeur de la tâche actuelle

44/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Communication entre tâches : les sémaphores

Synchronisation, précédence, etc.


Création

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
);

Prendre le sémaphore (attente bloquante)

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

Communication entre tâches : les sémaphores

Destruction

rt_sem_delete(&sem_toto);

Variantes asynchrones

rt_sem_p(&sem_toto, TM_NONBLOCK); // non bloquant si sémaphore


absent
rt_sem_p(&sem_toto, duree); // blocage pendant duree (en "ticks")
rt_sem_p_until(&sem_toto, date); // blocage jusqu’à date (en
"ticks")

46/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Partage de ressources : les mutex

Implémente le PIP (héritage de priorité).


Création

RT_MUTEX mut_toto;
rt_mutex_create(&mut_toto, // pointeur sur le mutex
"MUTTOTO", // nom du mutex
);

Accéder à la ressource (attente bloquante)

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

Partage de ressources : les mutex

Destruction

rt_mutex_delete(&mut_toto);

Variantes

rt_mutex_acquire(&mut_toto, TM_NONBLOCK); // non bloquant si


mutex non disponible
rt_mutex_acquire(&mut_toto, duree); // blocage pendant duree
(en "ticks")
rt_mutex_acquire_until(&mut_toto, date); // blocage jusqu’à
date (en "ticks")

48/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Communication entre tâches : les boîtes aux lettres (BAL)

Communication de messages de taille variable.


Création

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

rt_queue_write(&mbx_toto, &msg, taille, mode);

Recevoir un message (bloquant)

rt_queue_read(&mbx_toto, &msg, taille, TM_INFINITE);

49/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Communication entre tâches : les boîtes aux lettres (BAL)

Destruction

rt_queue_delete(&mbx_toto);

Variantes

rt_queue_read(&mbx_toto, &msg, taille, TM_NONBLOCK); // non


bloquant si message absent
rt_queue_read(&mbx_toto, &msg, taille, duree); // blocage
pendant duree (en "ticks")
rt_queue_read_until(&mbx_toto, &msg, taille, date); //
blocage jusqu’à date (en "ticks")

50/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Communication entre tâches : les FIFOs temps réel

Communication entre tâches Xenomai et processus Linux


Création comme périphérique dans /dev/rtp{numero}

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
);

Écrire des données dans la FIFO

rt_pipe_write(&pipe_toto, &bloc, taille, mode);

Lire des données dans la FIFO (bloquant) + Variantes

rt_pipe_read(&pipe_toto, &bloc, taille, TM_INFINITE);

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

Communication entre tâches : les FIFOs temps réel

Routine code_fifo exécutée lorsqu’une activité de lecture ou écriture


est détectée

int code_fifo(RT_PIPE *pipe, int event, long arg);


rt_pipe_monitor(&pipe_toto, &code_fifo);

52/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Communication entre tâches : les messages

Communication tâche à tâche


Envoyer un message (bloquant)

RT_TASK_MCB mcb_s ;
rt_task_send(&tache_cible, &mcb_s, NULL, TM_INFINITE);

Recevoir un message (bloquant)

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

Communication entre tâches : Interruptions

Permet des réactions rapides (traitement urgent, réveil tâche endormie)


Construction (espace noyau)

#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);

Construction (espace utilisateur)

rt_intr_create(&intr_toto, "INTRTOTO", IT_CLAVIER,


mode);

Fonctions associées

rt_intr_enable(&intr_toto); // activer l’interruption


rt_intr_wait(&intr_toto, TM_INFINITE); // espace utilisateur
seulement
rt_intr_delete(&intr_toto); // destruction de l’interruption

54/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Communication avec le matériel

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

2 Ordonnancement dans un système multitâches

3 Introduction à Xenomai

4 Éléments de spécification et conception des systèmes

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

Une question de point de vue

Différents points de vue


Commande
Supervision
Maintenance
etc.

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

Transformation : que fait le système ?


Comportement : que devient le système ?
Structure : Qu’est le système ?

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

Approches fonctionnelles : (SADT, SA/RT)


aspect transformationnel ⇒ aspect comportemental ⇒ aspect structurel
Approches réactives : (Réseaux de Petri, langages synchrones)
aspect comportemental ⇒ aspect transformationnel ⇒ aspect structurel
Approches objets : (UML)
aspect structurel ⇒ aspect transformationnel et comportemental

59/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Approche fonctionnelle SA/RT

Exemple : Spécification d’un distributeur


Contexte du système
Spécification fonctionnelle
Spécification comportementale
Graphe Etats/Transitions
Table d’activation des processus

60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Approche fonctionnelle SA/RT

Exemple : Spécification d’un distributeur


Contexte du système
Spécification fonctionnelle
Spécification comportementale
Graphe Etats/Transitions
Table d’activation des processus

60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Approche fonctionnelle SA/RT

Exemple : Spécification d’un distributeur


Contexte du système
Spécification fonctionnelle
Spécification comportementale
Graphe Etats/Transitions
Table d’activation des processus

60/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Approche fonctionnelle SA/RT

Exemple : Spécification d’un distributeur


Contexte du système
Spécification fonctionnelle
Spécification comportementale
Graphe Etats/Transitions
Table d’activation des processus

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

Synchronisation par les tâches


Risque de famine d’une tâche de faible priorité.
Tâche de synchronisation
Une tâche dédiée s’occupe de contrôler l’ensemble des autres tâches.
Utilisation de programmes réentrants
Routines pouvant être utilisées par plusieurs processus.

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

2 Ordonnancement dans un système multitâches

3 Introduction à Xenomai

4 Éléments de spécification et conception des systèmes

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

Un réseau de Petri est constitué de


Places
Transitions
Arcs
Un marquage (jetons)

Une transition est franchissable si


toutes ses places amont sont
marquées. Le franchissement
d’une transition se traduit par la
suppression d’un jeton dans
chacune des places amont et
l’ajout d’un jeton dans chacune des
places aval.

63/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Un outil de spécification : exemple

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).

Capacité de M1 : une pièce. S2

64/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Un outil de spécification : exemple

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).

Capacité de M1 : une pièce. 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

Réseau de Petri : PN = hP, T , I, O, M0 i


Places : P = {p1 , p2 , ..., pn }
Transitions : T = {t1 , t2 , ..., tl }
I : P × T → {0, 1} tel que I (pi , tj ) = 1 si pi est une place amont de tj
O : T × P → {0, 1} tel que O (tj , pi ) = 1 si tj est une transition amont de
pi
Marquage initial : M0 = m1 , m2 , ..., mn


65/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Équation fondamentale

Franchissement de tj : ∀i ∈ {0, 1} , mki +1 = mki + O (tj , pi ) − I (pi , tj )


On définit vkj = 1 si tj est franchie, 0 sinon.
⇒ ∀i ∈ {0, 1} , mki +1 = mki + j∈{1,l} (O (tj , pi ) − I (pi , tj )) vkj
P
 >
On définit vk = vk1 , ..., vkj , ..., vkl
⇒ Mk +1 = Mk + Avk
A : matrice d’incidence du RdP

66/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Exemple de matrice d’incidence

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

Réseau borné : un réseau est borné si le nombre de jetons dans chaque


place est borné
Un réseau borné est dit sauf si sa borne vaut 1
Contre exemple...

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

Réseau persistant : un réseau est persistant s’il ne contient pas de


situation de conflit.
Contre exemple...

71/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Analyse par réduction

72/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Analyse du graphe de marquage

Calcul de tous les marquages accessibles


Graphe :
Les noeuds représentent les marquages
Les branches représentent le franchissement d’une transition
Exemple...

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

Un T-invariant est un vecteur y d’entiers positifs tel que Ay = 0


y représente un vecteur de franchissement qui ramène au marquage du
départ

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

Réseau de Petri : PN = hP, T , I 0 , O 0 , M0 i


Places : P = {p1 , p2 , ..., pn }
Transitions : T = {t1 , t2 , ..., tl }
I 0 : P × T → N poids de l’arc de pi à tj
O 0 : T × P → N poids de l’arc de tj à pi
Marquage initial : M0 = m1 , m2 , ..., mn


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

Exemple de RdP généralisé...

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

Principe : différentiation des jetons


Réseau de Petri : PN = hP, T , I, O 0 , C, M0 i
Places : P = {p1 , p2 , ..., pn }
Transitions : T = {t1 , t2 , ..., tl }
I : P × T × C → {0, 1}
O0 : T × P × C → C
Marquage initial : M0 = m1 , m2 , ..., mn


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

Exemple de RdP coloré...

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

Exemple de RdP P-temporisé...

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

Exemple de RdP T-temporisé...

85/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

RdP continus

Similaires aux RdP T-temporisés


Franchissement continu des transitions

86/89
Définition Ordonnancement dans un système multitâches Introduction à Xenomai Spécification des systèmes Réseaux de Petri

Exemples de spécification comportementale

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

Le Grafcet est un langage de modélisation et de conception industriel


Des actions sont associées aux étapes (places)
Des fonctions de réceptivité permettent le franchissement des transitions
Les RdP peuvent aider à mieux structurer les modèles Grafcet
Les modèles de Grafcet doivent correspondre à des RdP vivants et
bornés de borne 1

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

Vous aimerez peut-être aussi