Vous êtes sur la page 1sur 96

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

Informatique sûre et temps réel


Master SdI – M2 Informatique Industrielle

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

Onera – The French Aerospace Lab


Palaiseau, France

2018–2019

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

Programme

5 séances de cours : 18h


3 séances de TP : 12h
1 séance d’examen : 2h

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

Plan

1 Définition

2 Ordonnancement dans un système multitâches

3 Introduction à RTAI

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

5 Réseaux de Petri

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

Plan

1 Définition

2 Ordonnancement dans un système multitâches

3 Introduction à RTAI

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

5 Réseaux de Petri

4/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI Spécification des systèmes Réseaux de Petri

Exemples de systèmes temps réel

Transport
Aérospatiale
Ferrovière
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/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI Spécification des systèmes Réseaux de Petri

Exemples de systèmes temps réel

Transport (temps réel dur)


Aérospatiale
Ferrovière
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 ou ferme ou incrémental)
etc.

6/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 (basé sur un système d’exploitation temps réel)
Distribué (mémoires partagées)

7/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 (basé sur un système d’exploitation temps réel)
Distribué (mémoires partagées)

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

Plan

1 Définition

2 Ordonnancement dans un système multitâches

3 Introduction à RTAI

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

5 Réseaux de Petri

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

Les états d’une tâche

9/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI Spécification des systèmes Réseaux de Petri

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


indépendantes

Rate Monotonic Scheduling (RMS)


Deadline Monotonic Scheduling (DMS)
Earliest Deadline First (EDF)
Least Laxity First (LLF)

11/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 :
Verrous
Sémaphores
Boites aux lettres

12/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 :
Verrous
Sémaphores
Boites aux lettres

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

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

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 Protocol (PCP)
Priority Ceiling Emulation (PCE)

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

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

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 Protocol (PCP)
Priority Ceiling Emulation (PCE)

13/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 Schduling (BS) : traitement en tâche de fond à priorité faible
Serveur de tâches sporadiques
Serveur synchrone : tâche fictive avec une certaine période d’activation
Serveur différé : possibilité d’activation en différé
Serveur sporadique

14/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 Schduling (BS) : traitement en tâche de fond à priorité faible
Serveur de tâches sporadiques
Serveur synchrone : tâche fictive avec une certaine période d’activation
Serveur différé : possibilité d’activation en différé
Serveur sporadique

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

Plan

1 Définition

2 Ordonnancement dans un système multitâches

3 Introduction à RTAI

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

5 Réseaux de Petri

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

Quelques RTOS (Real Time OS)

Tornado, VxWorks
Windows CE
QNX
LynxOS
RT Linux
FreeRTOS
RTX
etc.

16/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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.)

17/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

18/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

19/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

20/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

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

OS temps réel : RT Linux, RTAI

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

Noyau temps réel (RTAI)

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

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

Linux et RTAI

Linux reste inchangé


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

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

Environnement de développement

Évolutions permanentes
Des outils de mise au point
Outils de trace : LTT (équivalent à WindView sur VxWorks)
Exécution en mode utilisateur : module LXRT
Accès aux outils de débogage
Les processus Linux peuvent utiliser l’API RTAI
Performances moins bonnes mais acceptables pour la plupart des applications
RTAI-Lab
Spécification par schémas-blocs (Matlab/Simulink ou Scilab/Scicos)
Exécution RTAI (utilisation de la librairie RTAI-Lab)
Pour aller plus loin : Xenomai
Basé sur une structure Linux temps réel
Supporte d’autres API : POSIX, VxWorks, pSOS+, VRTX, uITRON, RTAI

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

Environnement de développement

Évolutions permanentes
Des outils de mise au point
Outils de trace : LTT (équivalent à WindView sur VxWorks)
Exécution en mode utilisateur : module LXRT (voir TP n◦ 2&3)
Accès aux outils de débogage
Les processus Linux peuvent utiliser l’API RTAI
Performances moins bonnes mais acceptables pour la plupart des applications
RTAI-Lab
Spécification par schémas-blocs (Matlab/Simulink ou Scilab/Scicos)
Exécution RTAI (utilisation de la librairie RTAI-Lab)
Pour aller plus loin : Xenomai
Basé sur une structure Linux temps réel
Supporte d’autres API : POSIX, VxWorks, pSOS+, VRTX, uITRON, RTAI

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

Créer une application temps réel

Installation de RTAI en modifiant le noyau


“Patcher” Linux
Compiler le nouveau noyau
Installer les modules
Écrire l’application temps réel sous forme de modules
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 RTAI (rtai_sched.ko, rtai_hal.ko,
etc.)
Chargement des modules applicatifs (toto.ko)

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

Développement d’un module RTAI (linux 2.6)

Inclure les librairies

include <linux/module.h>
include <asm/io.h>
MODULE_LICENSE("GPL");

include <rtai.h>
include <rtai_sched.h>
include <rtai_sem.h>
include ...

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

Développement d’un module RTAI (linux 2.6)

Définitions générales

include <linux/module.h>
include <asm/io.h>
MODULE_LICENSE("GPL");

include <rtai.h>
include <rtai_sched.h>
include <rtai_sem.h>

#define STACK_SIZE 2000


#define PRIORITE 1
#define N_BOUCLE 10
#define ...

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

Développement d’un module RTAI (linux 2.6)

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

include <linux/module.h>
include <asm/io.h>
MODULE_LICENSE("GPL");

include <rtai.h>
include <rtai_sched.h>
include <rtai_sem.h>

#define STACK_SIZE 2000


#define PRIORITE 1
#define N_BOUCLES 10

static RT_TASK tache_toto;


static SEM sem_titi;

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

Développement d’un module RTAI (linux 2.6)

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

...
void code_toto(int arg){
static int boucle = N_BOUCLES;

while(boucle--)
{
rt_printk("Hello World ! \n");
}

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

Développement d’un module RTAI (linux 2.6)

Fonction de lancement du processus temps réel

...
static int init_module(void){

rt_task_init(&tache_toto, code_toto, 0, STACK_SIZE,


PRIORITE, 0, 0);
...
rt_task_resume(&tache_toto);
...

return 0;
}

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

Développement d’un module RTAI (linux 2.6)

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

...
static int cleanup_module(void){

rt_task_delete(&tache_toto);
...

module_init(init_module);
module_exit(cleanup_module);

31/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

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

Les modules de RTAI

rtai_hal : fonctions de base


rtai_sched : ordonnanceur mono processeur
(ou) rtai_lxrt (espace utilisateur)
rtai_sem : gestion des sémaphores
rtai_fifos
rtai_mbx
etc.

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

Créer la tâche

Création de la tâche dans la fonction init_module

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


code_toto, // nom de la fonction à exécuter
0, // entier passé à la fonction
STACK_SIZE, // taille de la pile d’exécution
PRIORITE, // priorité, 0 est la plus haute priorité
0, // 0 pour ne pas utiliser le fpu, 1 sinon
0 // signal
);

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

Rendre une tâche périodique

Dans la fonction init_module (sauf en mode utilisateur)

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


date_depart, // en unités de compte interne
periode, // en unités de compte interne
);

Dans la tâche

rt_task_wait_period();

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

Suspendre, reprendre, terminer une tâche

Suspension

rt_task_suspend(&tache_toto);

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

rt_task_resume(&tache_toto);

Terminaison

rt_task_delete(&tache_toto);

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

Gérer le temps

Mode qui utilise le CPU TSC (Time Stamp Clock) (dans init_module)

rt_set_oneshot_mode();

Mode qui utilise une période fixée (dans init_module)

rt_set_periodic_mode();

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

Gérer le temps

Démarrage du timer (dans init_module)

start_rt_timer(tick_period);

Mode one-shot : argument ignoré


Mode périodique : tick_period est la période du timer en unités de
compte interne
Récupération du temps

rt_get_time(); (en unités de compte)


rt_get_time_ns(); (en nanosecondes)

Conversion

RTIME tuc, tns;


tuc = nano2count(tns);
tns = count2nano(tuc);

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

Gérer le temps

Arrêt du timer (dans cleanup_module)

stop_rt_timer();

Endormir la tâche

rt_sleep(duree);
rt_sleep_until(date);
rt_busy_sleep(duree);

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

Ordonnancement

Priorité fixe de 0 (RT_SCHED_HIGHEST_PRIORITY) à


RT_SCHED_LOWEST_PRIORITY

rt_get_prio(rt_whoami());
rt_change_prio(rt_whoami(), priorite);

Priorité dynamique

rt_task_set_resume_end_times(date_reveil,
date_echeance);
rt_task_set_resume_end_times(-periode,-echeance);

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

Communication entre tâches : les sémaphores

Donner un rendez-vous, exclusion mutuelle


Création

SEM sem_toto;
rt_typed_sem_init(&sem_toto, // pointeur sur le sémaphore
1, // valeur initiale
BIN_SEM, // type de sémaphore
);

Prendre le sémaphore (bloquant)

rt_sem_wait(&sem_toto);

Restituer le sémaphore

rt_sem_signal(&sem_toto);

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

Communication entre tâches : les sémaphores

Les types
BIN_SEM : sémaphore binaire (valeur ≤ 1)
CNT_SEM : sémaphore à compte
RES_SEM : sémaphore pour les ressources (exclusion mutuelle), algorithme
PIP (PRIO_Q)
Destruction

rt_sem_delete(&sem_toto);

Variantes asynchrones

rt_sem_wait_if(&sem_toto); : non bloquant si sémaphore absent


rt_sem_wait_until(&sem_toto, date); : blocage jusqu’à date au
maximum
rt_sem_wait_timed(&sem_toto, duree); : blocage pendant duree
au maximum

42/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

MBX mbx_toto;
rt_typed_mbx_init(&mbx_toto, // pointeur sur le sémaphore
taille, // taille de la boîte aux lettres (int)
type, // FIFO_Q, PRIO_Q ou RES_Q
);

Envoyer un message

rt_mbx_send(&mbx_toto, &msg, taille_msg); : blocage tant que le


message complet n’a pas été envoyé

Recevoir un message

rt_mbx_receive(&mbx_toto, &msg, taille_msg); : blocage tant


que le message complet n’a pas été reçu

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

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

Destruction

rt_mbx_delete(&mbx_toto);

Variantes (xxx = send ou receive)

rt_mbx_xxx_if(&mbx_toto, &msg, taille_msg); : envoi seulement


si le message entier peut être envoyé dans la BAL (sans blocage)
rt_mbx_xxx_wp(&mbx_toto, &msg, taille_msg); : envoi autant
d’octets que possible sans blocage
rt_mbx_xxx_until(&mbx_toto, &msg, taille_msg, date); :
blocage limité par le temps
rt_mbx_xxx_timed(&mbx_toto, &msg, taille_msg, duree); :
blocage limité par le temps

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

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

Communication entre tâches RTAI et processus Linux


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

rtf_create(numero, // pour identifier la FIFO (unsigned int)


taille, // taille de la FIFO (int)
);

Écrire des données dans la FIFO

rtf_put(numero, &bloc, taille_bloc); : non bloquant (≡ write


pour un processus Linux)

Lire des données dans la FIFO

rtf_get(numero, &bloc, taille_bloc); : non bloquant (≡ read


pour un processus Linux)

Destruction

rtf_destroy(numero);

45/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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(unsigned int fifo);


rtf_create_handler(numero, &code_fifo);

Redimensionner la FIFO

rtf_resize(numero, taille);

D’autres fonctions liées aux FIFOs (sémaphores FIFO, etc.)


rt_printk écrit dans un tampon lisible par la commande dmesg
Autre méthode : la mémoire partagée
plus complexe que les FIFOs
Exclusion mutuelle entre Linux et les tâches RTAI non garantie
Voir la documentation...

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

Communication entre tâches : les messages

Communication tâche à tâche


Envoyer un message

rt_send(&tache_toto, valeur); : bloquant, valeur (unsigned int)

Recevoir un message

rt_receive(&tache_toto, &val); : bloquant, valeur (unsigned int)

Variantes (if, timed, until)

47/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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)


Inhibe le noyau temps réel
Niveau matériel et logiciel
Construction

#define IT_CLAVIER 1
void isr_toto(void);
rt_request_global_irq(IT_CLAVIER, isr_toto); : connecter l’isr
rt_free_global_irq(IT_CLAVIER); : déconnecter toutes les isr

Fonctions associées

rt_startup_irq(IT_CLAVIER); : initialisation pour accepter les


interruptions
rt_shutdown_irq(IT_CLAVIER); : arrêt des interruptions
rt_enable_irq(IT_CLAVIER); : activer la source
rt_disable_irq(IT_CLAVIER); : désactiver la source
...

Des différences en mode utilisateur (cf TP n◦ 2&3)

48/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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, rtf0, ...)
utiliser les fonctions open, close, read, write
Accès direct aux ports E/S

#include <asm/io.h>
outb(valeur,adresse);
valeur = inb(adresse);

Et leurs variantes...

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

RTAI en mode utilisateur (module LXRT)

Quelques différences ⇒ voir dans les TP n◦ 2&3


Passage en mode temps réel dur

rt_make_hard_real_time();

Passage en mode temps réel souple

rt_make_soft_real_time();

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

Plan

1 Définition

2 Ordonnancement dans un système multitâches

3 Introduction à RTAI

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

5 Réseaux de Petri

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

Une question de point de vue

Différents points de vue


Commande
Supervision
Maintenance
etc.

52/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 ?

53/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

54/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

55/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

55/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

55/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

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

Éléments de conception

Synchronisation par les tâches


Risque de famine
Tâche de synchronisation
Processus réentrants

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

Plan

1 Définition

2 Ordonnancement dans un système multitâches

3 Introduction à RTAI

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

5 Réseaux de Petri

57/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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.

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

Un outil de spécification : exemple

On considère un poste de S
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
M 
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. 

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

Un outil de spécification : exemple

On considère un poste de 
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


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.

59/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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


60/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 + (O (tj , pi ) − I (pi , tj )) vkj
P
j∈{1,l}
⊤
On définit vk = vk1 , ..., vkj , ..., vkl
⇒ Mk +1 = Mk + Avk
A : matrice d’incidence du RdP

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

Exemple de matrice d’incidence

p

t 

A =?   





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

Exemples de structures

63/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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...

64/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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...

65/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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...

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

Analyse par réduction

67/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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...

68/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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é

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

Analyse algébrique

Exemple de P-invariant...

70/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

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

Analyse algébrique

Exemple de T-invariant...

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

RdP généralisés

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


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


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

RdP généralisés

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

74/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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 ′ , C, M0 i
Places : P = {p1 , p2 , ..., pn }
Transitions : T = {t1 , t2 , ..., tl }
I : P × T × C → {0, 1}
O′ : T × P × C → C
Marquage initial : M0 = m1 , m2 , ..., mn


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

RdP colorés

Exemple de RdP coloré...

76/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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)

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

RdP P-temporisés

Exemple de RdP P-temporisé...

78/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

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

RdP T-temporisés

Exemple de RdP T-temporisé...

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

RdP continus

Similaires aux RdP T-temporisés


Franchissement continu des transitions

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

Exemples de spécification comportementale

Exemple du distributeur
Exemple du TD1

82/84
Définition Ordonnancement dans un système multitâches Introduction à RTAI 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

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

Du RdP au Grafcet

Exemple...

84/84

Vous aimerez peut-être aussi