You are on page 1of 39

Applications temps rel

Pr Cherkaoui Ouamah
Objectif :

Garantir un temps de rponse un vnement


gnralement externe.

On parle aussi de garantir le respect dune chance


relative un stimuli

Pr Cherkaoui Ouamah
Domaine applicatif :

On rencontre des applications temps rel dans de


nombreux domaines :
aronautique,
militaire,
tlcommunication,
Gestion de production flexible
robotique

Pr Cherkaoui Ouamah
Dfinition : systmes temps rel

Ce sont des systmes numriques qui permettent


l'implantation d'applications o le respect des
contraintes temporelles est la principale contrainte
satisfaire.

Ce sont des systmes ractifs, qui ragissent


continment chacun des stimuli venant de leur
environnement considr comme externe au systme

Pr Cherkaoui Ouamah
Interface entre un STR et son environnement

un ensemble de priphriques d'entre appels


capteurs servant la collecte des signaux mis par
l'environnement
un ensemble de sorties appels actionneurs
fournissant l'environnement les commandes du
systme de contrle

Pr Cherkaoui Ouamah
Dfinition : systmes ractifs temps rel

vnement vnement
Entre SYSTME RACTIF Sortie
Stimuli TEMPS REL Ractions
Capteurs Actionneurs

un systme ractif temps rel :


La rponse aux stimulis d'entre ne dpend pas
seulement des stimulis eux-mmes mais aussi de l'tat
du systme quand les stimuli arrivent
Elle dpend non seulement des rsultats logiques du
traitement effectu en rponse au stimuli mais aussi de
l'aspect temporel de production de ces rsultats

Pr Cherkaoui Ouamah
validit d'un systme temps rel

Ainsi il doit respecter :

exactitude logique (exactitude des traitements) : calculer


les bonnes sorties du systme en fonction de ses entres
et de ltat actuel du systme,

exactitude temporelle : les rsultats de calcul (ractions)


sont rendus au bon moment (un calcul juste mais hors
dlai est un calcul non utilisable).

Pr Cherkaoui Ouamah
Diffrentes classes de systmes TR

Temps-rel mou : un retard dans l'obtention du


rsultat n'est pas dramatique (distributeur de billets)
Temps-rel dur : un retard dans l'obtention du
rsultat le rend inutile (dtection de missile)
Temps-rel ferme : un retard, s'il arrive trs peu
souvent, peut tre tolr (tlphonie)

La plupart des systmes temps-rel sont hybrides.

Pr Cherkaoui Ouamah
Rappel rapide sur les types de SE

Mono-tche mono-utilisateur DOS


Multitches multiutilisateur UNIX Windows NT ou
Windows pour le multitche uniquement
Exemple le temps partag graphe temporel du
robinet tournant

Pr Cherkaoui Ouamah
Multiprogrammation
(programmation multitches)

Ressources matriel
application
UC Disque
MC

application

Donne
code Fichier

application Ressources logiciel

Pr Cherkaoui Ouamah
Quantum : temps attribu
chaque user Terminaison de u2 le
quantum nest pas
compltement consomm

u1 u2 u3 u1 u2 u3 u1 u2 u3 u1 u2 u3 u1 u3 u1 t

Ordonnancement temps partag


Occupation du CPU : vue macroscopique

Pr Cherkaoui Ouamah
u3
Rle de lordonnanceur:
Choix de luser entrant
Commutation dutilisateurs sur le CPU:

- lection de lutilisateur entrant

Ordonnancement : - Prservation du contexte de luser sortant

- Commutation - Restitution du contexte de luser entrant

- Attribution du CPU luser entrant

u1 u2 u3 u1 t

Ordonnancement temps partag


Occupation du CPU : vue microscopique

Pr Cherkaoui M.M. Ouamah


u3
ordonnancement

u4 u1

ordonnancement
Robinet ordonnancement
Tournant

u2
u3
ordonnancement

Pr Cherkaoui Ouamah
Prsentation du TP N 1

GESTION DUN SYSTME TEMPS PARTAG

Pr Cherkaoui Ouamah
Notion de Tche

Tache (processus ou thread /UNIX) :


est un programme en cours dexcution.
(Toutes les situations envisageables entre :
sa soumission et sa fin )

Programme : {fichier excutable + Donnes+pile+}

Pr Cherkaoui Ouamah
Informations associes une tche

Pour lutilisateur :
Code du programme

Donnes du programme

Pour le Noyau du SE :
Descripteur de tche :
Etat de la tache
Etat du processeur (contexte machine ; en multiprocesseur)
ATTRIBUTS (priorit,..
Moyens de communication /synchronisation
Espace mmoire accessible

Pr Cherkaoui Ouamah
Multiprogrammation: Etats de la tche
inexistant

CREATION

FIN
DEXECUTION
PRET
Arrive de
lvnement
attendu
Interruption
Ordonnanceur

En Cours
En Attente : dEXECUTION
ATTENTE Evnement
Dure
Libration dune
Pr Cherkaoui Ouamah
ressource
Multiprogrammation
priorit des tches

:
PRIORIT : cest le critre sur lequel
sappuie lordonnanceur pour
dterminer, parmi les taches prtes,
celle qui doit poursuivre son
excution
Multiprogrammation priorit des tches

Plusieurs faons dattribuer une priorit :


2 ou 3 niveaux de priorit (SE /users) avec FIFO circulaire.

Priorit variable : le SE change la priorit des taches selon


leurs activits : croit avec E/S
Priorit fixe par lutilisateur selon sa propre estimation de
lurgence contextuelle de la tche.
Primitives dun noyau multitche
(par types)
ACTIONS INTERTACHES
Les unes sur les autres

SYNCHRONISATION entre les tches


ACCES AUX RESSOURCES
COMMUNICATION ENTRE TACHES
ACTIONS INTERTACHES

CRER (une nouvelle tache)


DETRUIRE (une tache)
Bloquer /dbloquer ?
SYNCHRONISATION entre les tches

Temporelle : DORMIR
Evnementielle (de lextrieur ) interruptions
Entre les tches ATTENDRE SIGNALER
ACCES AUX RESSOURCES

DEMANDER
LIBERER
COMMUNICATION ENTRE TACHES

PAR MESSAGE
ENVOYER RECEVOIR

PAR MEMOIRE PARTAGEE ( laide du Noyau)


LIRE ECRIRE

PAR FICHIERS ( laide du SGF)


LIRE ECRIRE
ACTIONS INTERTACHES

CRER
Id_TACHE <-CRER (programmes, attributs)
Id_TACHE : identifiant attribu par le noyau
Programmes : nom du fichier excutable ou id
Attributs : priorit pouvoir autres

DETRUIRE
TERMINER_TACHE()
De sa propre initiative
Forc par le noyau
Par toute autre tache qui possde l Id_TACHE
SYNCHRONISATION
Evnementielle entre les tches

ATTENDRE ( Numero_Evenement)
(primitive lance par la tache en attente de lvnement )
Si (vnement est arriv)
Effacer vnement
Le tache continue de se drouler
Sinon
La tache est mise ltat ATTENTE

Finsi
Multiprogrammation: Etats de la tche
Inexistant

CREATION

FIN
DEXECUTION
PRET
Arrive de
lvnement
attendu
Interruption
Ordonnanceur

En En Cours
ATTEN Attente : dEXECUTION
TE Evnement
Dure
Libration dune
ressource
SYNCHRONISATION
Evnementielle entre les tches

SIGNALER (Id_tache, Numero_evenement)


(primitive lance par la tache qui veut signaler lvnement
la tache Id_tache )
Si (la tache Id-tache est en ATTENTE de cet
vnement) (et uniquement cet vnement!)
Mettre la tache Id-tache ltat PRET
Sinon
Marquer lvnement : arriv

FinSi
Graphe de prcdence

Une fois les taches dtermines, pour mener bien la


phase dattribution des priorits, il est utile de
dessiner ce graphe qui dtermine lordre thorique
de droulement des taches les unes /autres
Graphe de prcdence
T1

T2
T3

T4
T5 T6

T7
EXEMPLE
FEU COUPLES
COMMANDENT

VOIE A
VOIE A

VOIE B

CAPTEURS
FEU COUPLES
dtectant la prsence
COMMANDENT
de vhicules
VOIE B
Systme de dveloppement

La tache mre est cre par HUMAN INTERFACE :


Elle correspond au programme principale ou le
main
Objet Tache

Programmation : tache est une procdure


Avec :
Une boucle infinie (travail rptitif )

Une attente (au moins) dvnement dans la boucle.

Lancement (= inexistant prt) par primitive RMX


Tache_jt =rq$create$task(priorit, @tache.)
RMX: Etats de la tche
1

5
PRETE
a
6
2 8
3
Suspendue
9
Endormie Active
4
7
b
d
Endormie /
c Suspendue e
Structure gnrale dun programme

$include
Dclaration de variables
Proc1: procedure(.);

Fin_proc proc1
Proc2: procedure(.);

Fin_proc proc2
Tache1 : procedure;

Fin_proc tache1
Tache2 : procedure;

Fin_proc tache2
Debut
Tache_jt 1=rq$create$task(p1, @tache.);
Tache_jt 2=rq$create$task(p2, @tache.);
.
.
.
retour_job
fin
Structure gnrale dun programme
Prog : do;
$include
/*Dclaration de variables*/
dcl (temps, duree_max, duree, cd_ret) mot;
dcl chrono_jt jeton;

affiche: procedure(valeur) reentrant public ;


dcl valeur mot;
Printf (.);
Fin_procedure_affiche

Chrono : procedure reentrant public ;


dcl cd_ret mot;
Temps = 0;
Faire toujours
Call rq$sleep(duree, @cd_ret) ;
temps = temps+1;
Call affiche(temps);
Fin_toujours
Fin_procedure_chrono

Debut
Duree_max = 5000;
Duree= 100
Chrono_jt =rq$create$task(130, @chrono,param-tache);
Call rq$sleep(duree_max, @cd_ret) ;
Call rq$delete$task(chrono_jt,param-tache);
Tache_jt 2=rq$create$task(p2, @tache.);

retour_job;
fin
fin_module prog;