Cours TR
Cours TR
Cours TR
SOMMAIRE
1 Sommaire
18 Chapitre 3 LA SPECIFICATION
18 I- Aspect fonctionnel
18 Introduction -1
19 Exemple -2
22 Diagramme de flots de données -3
24 Les règles de formation et d'interprétation d'un DFD -4
26 La spécification de processus -5
Chapitre 1
Pointeur de pile
Zone de pile
Introduction Cours d’STR Informatique Industrielle
aux systèmes temps réel
Zone de programme: Contient les instructions du programme et certaines constantes. *
.Accessible en lecture seulement
Zone de pile: Permet de ranger des informations temporaires (variables locales, adresse de *
.retour de sous-programme, etc. ...). Accessible en lecture et écriture
Zone de données: contient les données variables et les données constantes ou initialisées. *
.Elle est accessible en écriture et en lecture
Le contexte d'un processus est caractérisé par les valeurs des registres du microprocesseur, de
l'état des pointeurs des zones mémoire associées au processus (instruction, données, pile) et
:des caractéristiques du processus. Parmi ces derniers, on trouve essentiellement
.le nom du processus •
La priorité, permettant de quantifier le degré d'urgence du processus. Cette priorité permet •
de déterminer l'ordre de l'allocation du processeur lorsque plusieurs processus sont en
.attente d'exécution
Un droit d'accès, spécifiant les ressources matérielles et logicielles accessibles par le •
.processus
:La synchronisation .1
Le multitâche pose le problème de la gestion des relations entre l'ensemble des
processus qui communiquent avec le système informatique pour obtenir une cohérence
.maximale des informations par rapport au temps
:On distingue 4 ( quatre ) catégories de relations entre les processus
.Les processus indépendants ♦
.Les processus ayant accès à des ressources communes ♦
.Les processus liés ♦
.(Les processus à contrainte de temps/ (urgence de traitement ♦
Dans le cas des processus ayant accès à des ressources communes, on doit prévoir des
.mécanismes pour assurer le partage de ses derniers
:Solution
les sémaphores -
(les événements (signaux -
les rendez-vous -
:La communication .2
Il y a plusieurs méthodes de communication de données entre tâches. Les plus
: courantes sont
(les boîtes à lettres (messages -
les files d'attentes -
:E- Ordonnancement des ressources
Le déroulement des processus temps réel est dépendant des événements externes à
l'ordinateur. Plusieurs tâches peuvent se trouver en concurrence pour l'octroi de l'unité
centrale. Ce conflit est levé en accordant à chaque tâche un niveau de priorité. Ainsi
.celle de plus grande priorité est exécuté en premier
(L'ordonnenceur (scheduler .3
L'ordonnenceur d'un environnement temps réel est le responsable de la gestion de
l'allocation du processeur. Chaque fois qu'une modification intervienne sur l'ensemble
des tâches actives, l'odonnenceur sera invoqué. L'ordonnenceur a donc deux rôles
:essentiels
Introduction Cours d’STR Informatique Industrielle
aux systèmes temps réel
assurer la gestion des commutation de tâches de l'état bloqué à l'état éligible *
?
Processus ELU
DEBLOCAGE SELECTION
DES PROCESSUS )Dispatcher(
ROLE DE L'ORDONNENCEUR
1 INEXISTANT
2
HORS
3
7 Service 14
4 13
Eligible 11
Introduction Cours d’STR Informatique Industrielle
aux systèmes temps réel
12 En Attente de
Ressource
5 6
15
8
9 En Attente de
Elu Délai
10 16
En Attente
événement
Action PROCEDE A
SYSTEME
INFORMATIQUE Information sur
COMMANDER
état
)événement(
Introduction Cours d’STR Informatique Industrielle
aux systèmes temps réel
ETAT1
événement 1
action 1
ETA2
: b- Système informatique
Généralement le système informatique est un système multitâches. Plusieurs
:solutions sont envisageables
[PC++[(NTR) ou Carte NTR *
(UNIX + NTR (Noyau temps réel *
Exemple: NTR ou A6RMTR ou PSOS ou Vxworks
:Système d'exploitation temps réel *
Exemple: OS9
Soit un système embarqué à bord d'avion, qui a pour but de fournir la position
instantanée de celui-ci, par rapport à un point de référence, en fonction des différents
.paramètres d'entrées à partir d'un certain nombre de capteurs
:Le temps de traitement global est le temps mis pour
acquérir: toutes les données fournies par les capteurs -
traiter: ces données -
.fournir: un résultat -
On peut ainsi décomposer ces trois traitements en trois tâches distinctes et
.indépendantes
T1 = temps d'acquisition Si
T2 = temps de traitement
T3 = temps mis pour fournir le résultat
.Tlim = le temps limite à respecter et
Il faut donc que T1 + T2 + T3 < Tlim pour que notre système fonctionne en temps
réel
Communication
Communication
Communication
Communication TACHE2
TACHE2
TACHE1-
TACHE1- TACHE3
TACHE3
Interruption
Interruption TACHE 1 TACHE
TACHE2
TACHE2 TACHE22 TACHE
TACHE33
périphérique TACHE 1
périphérique
Acquisistion
Acquisistionde
de Traitement
Traitementde Stockage
de Stockageetet
données
données données affichage
données affichagede
de
temps=T1
temps=T1 temps=T2
temps=T2 RESULTAT
RESULTAT
temps=T3
temps=T3
[Avec [ T1 + T2 + T3 <TEMPS LIMITE
Introduction Cours d’STR Informatique Industrielle
aux systèmes temps réel
: Donc
La définition d'une application temps réel est caractérisée avant tout par la
synchronisation entre le traitement de l'information et la génération de données issues
.du monde extérieur
Un programme temps réel fonctionne donc sous contrôle des sollicitations du monde
extérieur, par opposition à un programme classique linéaire qui commande les flots de
.données en entrée et/ou en sortie
TR = Tcalcul + TE/S
Dans un système temps réel, certains traitements ont besoin d'être effectués avant
.d'autres par ce qu'ils sont plus urgents
Arrivée d'une
interruption
Traitement de
l'interruption
TACHE A
TACHE A
DELAI URGENCE
URGENCE ET DELAI
Introduction Cours d’STR Informatique Industrielle
aux systèmes temps réel
:La préemption -3
:a- Définition
La préemption est la réquisition du processus pour l'exécution d'une tâche et d'une
.seule pendant un temps déterminé
.Donc la préemption est le fait de tenir compte du critère d'urgence du traitement
t1 Tâche préemptive t1
t2 tn
t3
Chapitre2
: La validation
La validation d'un système consiste à établir qu'il est conforme aux besoins exprimés par le
.demandeur
Spécification
système
VALIDATION Tests d’intégration
système
Spécification
logiciel/performance VALIDATION Tests de
performance
Spécification
Validation
Conception VERIFICATION
préliminaire Tests d’intégration
Conception Réalisation
Conception Tests unitaires
détaillée
Codage
programmation [CALVEZ[
"cycle en cascade"
Conception
détaillée du
logiciel
Expression
du besoin
Spécification
Conception système Conception
détaillée du détaillée du
logiciel matériel
Système
final
Validation
système
Construction Construction
du logiciel du matériel
Système intégré
Logiciel de Prototype
référence matériel
Intégration
système
Axe de symétrie
[PEREZ[
Chapitre3
LA SPECIFICATION
nom d
e l’ac
quisit
ion
Opérateur dem
and
Imprimante
e
co
m
pte n
isitio
ren
EXPLOITER acqu
du ort de l’
rapp co
ent ur
arge
m acquisition be
do
e ch
de d cu
o mman de
m
en
c tée
e ur e
at c
d ic sen
Système In pré Ecran
d’acquisition s iti
on graphique
ui
d ’ acq
i er
fich
commande de
chargement données de l’acquisition
OBTENIR
OBTENIR EXTRAIRE
données mesures brutes IDENTIFIER
données
nom de acquisistion acquisition
acquisistion 3.0
l’acquisition
1.0 4.0
1.0
mesures brutes
18
caractéristiques de demande
l’acquisition d’impression
mesures réelles
IMPRIMER
rapport
6.2
CALCULER
résultats
6.1 rapport de
l’acquisition
resultats
demande de
caractéristiques de visualisation
dimensions écran
l’acquisition
FORMATER
cartouche écran
7.1
cart
ouc
he é
cran
mesures réelle dimension fenêtre
u rbe courbe
co documentée
PRODUIRE
CALCULER courbe
maximum
7.2
7.3
demande de
mesure réelle maxi visualisation
Une flèche simple indique qu'il s'agit d'un flot de données discrets dans le temps. Ce flot
de données a un nombre de valeurs limitées et il est définis en des points isolés du temps, et
.indéfinis en dehors de ses points
.Exemple: le code d'une carte DAB n'est valable que si la carte est insérée dans le lecteur
Une flèche double indique qu'il s'agit d'un flot de données continu. Ce flot de données a
.des valeurs définies en tout point du temps
.Exemple: température livrée par un capteur
:Processus -3.2
Définition: un processus est une unité d'activité réalisée par le système, qui
change un ou plusieurs flots de données entrants en un ou plusieurs flots de données sortants.
.Un processus accepte, stocke et/ou produit des flots de données
Présentation: un cercle entourant L'identificateur du processus et un numéro
de référence. L'identificateur du processus décrit la transformation opérée à l'aide d'un verbe
d'action à l'infinitif, suivi, éventuellement, d'un complément d'objet direct, qui concerne la
donnée sur laquelle porte la transformation. La référence numérique traduit la place du
.processus dans une décomposition hiérarchique
:Exemple
boîtie
r énergie mesure brute
énergie CONTRO perdue
CONVERTI
brute BOUCHER LER R
boîtier énergie énergie de
mesure
boîtier 2.1 3.3 mesure réelle
bouchon contrôle
1.0
:Stockage de donnée -3.3
Définition: un stockage de donnée est un regroupement de données, ou une
donnée primitive, maintenu disponible et qui peut être utilisé par tout processus. Son contenu
.n'est pas changé par un processus qui y lit, il n'est modifié que par un processus qui y écrit
Représentation: deux lignes parallèles encadrant l'identificateur de la donnée
.stockée. Cet identificateur doit être composé de la même manière que celui d'un flot
:Exemples
robot
écran
A
3.2
B
3.1 C
3.3
A
B C
3.1.2
3.1.1
3.1.3
MAINTENIR
température commande de vanne
température
constante
5.4.3.1
si e > -2 0
si |e| ≤ 2 3e + 6Vv=
si e < 2 12
L'apspect Cours d’STR Informatique Industrielle
informationnel
Chapitre4
L'ASPECT INFORMATIONNEL
Dictionnaire de donnees
( )
I/ INTRODUCTION
.L'aspect informationnel contient la spécification de toutes des données du modèle
:On distingue deus types de données
f les flots de données: constitués par des données composées et des données
.primitives
SYMBOLE SIGNIFICATION
= données composées de
+ regroupement sous ordre
[![ ou [/[ Sélection, ou exclusif
{} Itération non bornée
n{}p Itération de n à p
n{},{}p Itération d'au moins, d'au plus p
n{}n Itération exacte de n
() Optionnel équivalent à {}1
"" Délimiteur d'expression littérale
** Délimiteur de commentaire
@ Clé d'accès
:Exemple : Spécification de données composées
données Dictionnaire de
données
ISET DE SFAX ~ A.U 97/98 27 Page DD TAYARI Lassaad
Chapitre5
L'APSPECT EVENEMENTIEL
I- INTRODUCTION
: L'aspect événementiel prend en considération
f Les conditions opératoires des processus, c'est à dire les événements qui les activent et les
.désactivent
AMPLIFIER
amplitude
REDUIRE
amplitude
A/I marche
A/I
SAISIR A/I CONTROLER
signal amplitude
signal signal
sonore seuil mini arrêt
atteint signal
signaux saisis seuils seuil maxi D
normal
atteint
DETECTER signal
seuil
RESTITUER sonore
signal réstitué
Schéma préliminaire de Régulation d’amplitude d’un signal sonore
:f Définition
Une transformation de contrôle est une unité de contrôle qui fait correspondre
des flots événements en sortie à des flots événements en entrée. Elle produit des événements
.en sortie à partir d'événements en entrée, selon une logique principalement séquentielle
:f représentation
Elle est représentée par un cercle en pointillé entourant l'identificateur de la transformation et
.un numéro de référence
:Exemple
CONTROLER
Pièce présente Présence pièce Usinage permis
1.1
:stockage événement -2
:f Définition
.Un stockage événement est une mémorisation d'un ou plusieurs flots événement
:f représentation
Il est représenté par deux lignes parallèles en pointillé, encadrant L'identificateur des
.événements stockés
:Exemple
:EXEMPLE
L'apspect Cours d’STR Informatique Industrielle
évènementiel
sup
po
rt prè robot libre
te
Pièces présentes
CONTROLER
assemblage
as
rèt po sem
a nt p ss
pos ib bla
com le ge
condition
action
Etat suivant
REPOS
marche . arrêrt .
modèle
d’environnement spécification des liste des
temps de réponce évènements externes
schéma de contexte
données évènements
modèle de
comportement Relations entre les composants du modèle de
spécification
Une gâche électrique est débloquée par envoie d'une tension et se rebloque dès que cette
.tension cesse; un certain délai est laissé pour l'ouverture de la porte
Exigences temporelles
:Travail demandé
donnez le diagramme de contexte -1
donnez le schéma préliminaire -2
détaillez la spécification des processus -3
donnez le dictionnaire de données -4
donnez la spécification de contrôle -5
:SOLUTION POSSIBLE
nte
ep rése
cart
COMMANDER commande
lecteur de carte déblocage
gâche électrique
top d’horloge
ouverture
magnétique
de porte
impu
lsion
impul
sion
commande
CONSTITUER DEBLOQUER déblocage
trame gâche
3.0 5.0
top d’horlage A/I
EFFACER A/I
LIMITER
trame délai écoulé
D CONTROLER déblocage
7.0 ouverture de 6.0
D
D porte
carte
code 1.0 libérée
valide carte
trame
VALIDER détéctée délai de garde
code code D
erroné TESTER
4.0 presence carte
2.0
code référence
carte présente
DICTIONNAIRE DE DONNEES
[bit = [0|1
[bit parité = [0|1
*parité impaire *
caractère contrôle = bit parité + caractère numérique
caractère numérique = 4{bit[4
*type:caractère, intervalle : '0'-'9', codage BCD *
*carte détectée = *événement traduisant l'introduction d'une carte dans le lecteur
* carte présente = *signal externe, en provenance du lecteur
,début: passage d'un front haut à un front bas *
*fin : passage de front inverse
carte retirée = * événement signalant le retrait d'une carte introduite dans le lecteur, déduit la
* carte présente
code = 5{caractère numérique}5
* code erroné = * événement produit dans un code n'est pas reconnu
*codes référence = * code autorisés
{code}
* code valide = * événement produit quand un code est reconnu
*commande déblocage = * tension provoquant le déblocage de la gàche
type: entier, valeurs:0-12, valeur par défaut 0, pour le blocage, et 12 *
* pour le déblocage, unité : v
*délai de garde = * délai pendant lequel la porte peut être ouverte
*délai écoulé = * événement produit après le déblocage de la gâche, afin de la rebloquer
impulsion = * impulsion du signal de données lues sur la piste de la carte
* magnétique
** = marqueur de début
*type : caractère, valeur:';', codage:010111*
** = marqueur de fin
* type:caractère, valeur:'?', codage : 11111*
message = 5{caractère contrôlé}5
* top horloge = * signal utilisé pour échantillonner les données lues sur la carte
période: de3.4 ms à 226µs, pour une densité moyenne de bit de 75 bpi (ou *
*(2.95 bits par mm
trame = marqueur de début + message + marqueur de fin
SPECIFICATION DE CONTROLE
<D> EFFACER trame
<D> TESTER présence carte
départ
carte détecté
<A> CONSTITUER trame
attente
délai écoulé
<D>EFFACER trame
<A> DEBLOQUER gâche
<D> LIMITER déblocage
déblocage gâche
Le noyau Cours d’STR Informatique Industrielle
temps réel
Chapitre6
I/ PRESENTATION GENERALE
Cet exécutif temps réel est prévu pour être exécuté sur un IBM PC. Il se présente sous
la forme d'une librairie de fonctions et de primitives : "ntr.lib". tous les symboles de cette
."librairie sont indiquées dans le fichier "ntr.lst
les prototypes des fonctions et des déclaration des variables globales se trouvent dans le
."fichier "ntr.h
Par rapport à un projet quelconque, il suffit de rajouter la librairie "ntr.lib" dans votre
."fichier projet ".prj
."Cette librairie a été compilée dans le modèle de mémoire "large
Dans les manipulations de contexte, le noyau temps réel ""NTR" modifie la pile. Il ne faut
:donc pas générer le code qui teste le débordement de pile
.option/code generation/ test stackoverflow : off
II/ LISTE DES PRIMITIVES DU NOYAU
Les primitives proposées par ce noyau temps réel permettent la gestion des processus,
la gestion des synchronisations, la gestion des communications par boîtes aux lettres, la
gestion des interruptions matérielles et la gestion du temps. La technique utilisée pour la
.synchronisation est la techniques des sémaphores
Pour la définition des différents objets manipulés, nous avons privilégié la technique
d'allocation dynamique de mémoire afin d'avoir une gestion plus efficace de celle ci. De plus,
.cette technique est mieux adaptée à la "philosophie" du langage C
Le noyau Cours d’STR Informatique Industrielle
temps réel
:Table de primitives
(Gestion des processus (ou des tâches
start (pour rendre un processus activable (ou prêt
stop arrêt d'un processus
set_priority modification de la priorité initiale
Synchronisation sur sémaphore
waitsem mise en attente d'événement d'un processus
signalsem signalisation d'un événement
seminit initialisation d'un compteur de sémaphore
new_sem allocation mémoire d'un nouveau sémaphore
Gestion des boites aux lettres
send envoie d'un message dans une boîte aux lettres
receive retrait d'un message d'une boîte aux lettres
new_mailbox allocation mémoire et initialisation d'une boîte aux lettres
new_message allocation mémoire d'un nouveau message
Gestion des interruptions
enable_ints valide les interruptions
disable_its inhibe les interruptions
attach attache un sémaphore à un niveau d'interruption
liberer .libération d'une entrée d'interruption précédemment attachée
Gestion du temps
new_timer allocation mémoire d'un nouveau timer
sleep mise en sommeil d'un process pendant un temps prédéfini
gest_hor tâche système de gestion des horloges
waitc attente conditionnelle derrière un sémaphore
watchdog tâche système de gestion des chiens de garde
Pour supprimer un objet qui a été alloué en mémoire il faut utiliser la fonction "free"
.de la librairie standard du langage C
III/ MODE D'ORDONNANCEMENT ET PRECAUTIONS
:définition et déclaration de tâches -1
:La déclaration d'un processus est identique à celle d'une fonction sans arguments
;(void tache(void
;(begin_ntr(SLEEP_OFF,WAITC_OFF, WAITSEMTO_OFF
/* start(tache1,100); /* activation de la tache1 avec la priorité 100
/* start(tache2,200); /* activation de la tache1 avec la priorité 200
/* start(tache3,300); /* activation de la tache1 avec la priorité 300
Le noyau Cours d’STR Informatique Industrielle
temps réel
"Fichier "ntr.lst
Publics by module
reg_LSR1 _reg_LSR2_
reg_MSR1 _reg_MSR2_
reset_DTR _reset_RTS_
restaure_reg_uart _rswrite_
sauve_reg_uart _set_DTR_
set_RTS _status_ligne_
trame1_vide _trame2_vide_
valide_RX _valide_TX_
valide_it_err_recept _valide_it_mod_modem_
valide_it_recept_com _valide_it_transm_com_
/*inportb/*Cette fct, d‚f ds dos.h, est une fct et non une macro undef #
/*outportb/*Cette fct, d‚f ds dos.h, est une fct et non une macro undef#
ESC 27 define#
/*/*flag option, param d'entr‚e de begin_ntr define SLEEP_ON 1#
/*/*flag option, param d'entr‚e de begin_ntr define SLEEP_OFF 0#
/*/*flag option, param d'entr‚e de begin_ntr define WAITC_ON 1#
/*/*flag option, param d'entr‚e de begin_ntr define WAITC_OFF 0#
/*/*flag option, param d'entr‚e de begin_ntr define WAITSEMTO_ON 1#
/*/*flag option, param d'entr‚e de begin_ntr define WAITSEMTO_OFF 0#
/*define TOUJOURS 1 /*Pour faire une boucle sans fin #
struct SEMAPHORE
}
long compt;/*compteur du semaphore = nbr de place dispo ds la
/*ressource associ‚e au s‚maphore
/*struct TTIB *point;/*pointe sur la liste des taches en attente
;{
typedef struct
}
/*unsigned char r_ier, r_lcr, r_mcr, r_dll, r_dlm;/*les reg … sauver
/*void interrupt (*it_uart)(void);/*Pour sauver le vect d'it
/*REG8250;/*uart ‚quivalent : le 16450 de chez NS{
/*(extern struct TTIB *exec;/*pte la file des taches activables (list d'‚x‚c
/*()d‚fini ds "ntr.c" et initialis‚ sur le tib du pp par la fct begin_ntr */
Le noyau Cours d’STR Informatique Industrielle
temps réel
TP N°1
II N4 Cours de Mr: TAYARI Lassaad
T P STR N°1
STR
Objectifs
Aider les étudiants à réaliser une application en appliquant la méthode de �
.(spécification SART (WM
Apprendre la programmation des interruptions pour l'interface parallèle, le clavier et ‚
.le timer
Equipements
f Matériel
Micro ordinateur de type PC
( Générateur de basses fréquences (GBF
Câble de connexion avec le port parallèle
f Logiciel
Langage C
Système d'exploitation DOS
Prérequis
f Matériel et système
f Programmation C
f Algoritmique
f Systèmes de communication
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
énoncé
Notre système de mesure de fréquence consiste consiste a mesurer la fréquence d'un signal
.TTL (carré par exemple). Donc il joue le rôle d'un fréquence mètre
:Spécification du système -1
Il s'agit d'un micro-ordinateur relié a un générateur de basses fréquences de la manière
:suivante
le signal a mesurer est injecté à l'entrée ACK du port de l'interface parallèle. Le passage du
niveau électrique du signal de 0 a 1 logique déclenche une interruption. Ce déclenchement
.d'interruption doit incrémenter un compteur
En se servant de l'horloge interne de système, on peut donc calculer le nombre de périodes du signal
d'entrée par unité de temps, donc on peut déduire facilement la fréquence de ce signal. En se basant
.sur cette idée on peut donc réaliser un fréquence mètre
En appuyant sur la touche "F1", le système doit compter le nombre d'impulsions du signal a mesurer
:pendant N tops d'horloge (N est un paramètre à fixer). La formule de calcul sera la suivante
fréquence=(nombre d'impulsions/N)*18.2
En appuyant sur la touche "F2" le système doit afficher la fréquence du signal puis il retourne au
.repos
TP 65 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
Commande
Impulsion
LIRE
touche
MESURER A/I
Horloge D 3.0
fréquence
2.0
Cal CONTROLER
cul
_ter
min fréquence touche
é
fréquence
1.0
AFFICHER
fréquen
ce form
fréquence atée
4.0
temps d’acquisition
impulsions
GERER
2.2 A/I é
CONTROLER ev
ch Horloge
p sa
impulsions
tem
nombre d’impulsion 2.1
CALCULER
fréquence
2.4
fréquence
calcul terminé
MESURER fréquence
TP 66 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
commande
<D> lire touche REPOS
touche=F3 touche=F1
<A> produire fréquence
MESURE touche=F2
calcul terminé
<I> produire fréquence
<D> affichage fréquence
commande
AFFICHAGE
<D> lire touche
touche=F3
TP 67 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
REPOS
A
impulsion =0
temps=0
<A> compter imulsion
<A> Gérer temps
ACQUISITION
temps achevé
<I> compter impulsion
<I> Gérer temps
<D> calculer fréquence
:Travail demandé
.trouver le diagramme de contexte du système -1
étudier et commenter le diagramme préliminaire -2
construire le dictionnaire des données -3
.faire la spécification des processus préliminaire en utilisant l'approche procédurale -4
En utilisant le Langage C essayez d'implanter le système -5
ANNEXE
TP 68 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
<include <stdio.h #
<include <dos.h #
<include <conio.h #
define F1 59#
define F2 60#
define F2 61#
ifdef __cplusplus #
... define __CPPARGS#
else #
define __CPPARGS#
endif #
;int nbr_impulsions=0,temps,countt,Key,Lo_Key
/*-------------------------------------------------------------------------*/
(void interrupt handler1(__CPPARGS
}
/* increase the global counter */
;++nbr_impulsions
/* call the old routine */
;()oldhandler1
{
/*----------------------------------------------------------------------*/
(void interrupt handler2(__CPPARGS
}
/* increase the global counter */
;++temps
/* call the old routine */
;()oldhandler2
{
/*--------------------------------------------------------------------*/
/* void interrupt handler3(__CPPARGS) /* if C++, need the the ellipsis
}
/* disable interrupts during the handling of the interrupt */
;()disable
/* increase the global counter */
;(Key=inportb(0x60
;Key=Key%128
/* reenable interrupts at the end of the handler */
;()enable
/* call the old routine */
;()oldhandler3
{
/*-------------------------------------------------------------------*/
(int main(void
}
/* save the old interrupt vector */
;(oldhandler1 = getvect(INTR1
;(oldhandler2 = getvect(INTR2
;(oldhandler3 = getvect(INTR3
TP 69 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
;return 0
{
Bon travail
TP 70 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
ISET DE SFAX A.U: 1997/1998 Sem 2
TP N°2
II N4 Cours de Mr: TAYARI Lassaad
STR
TP 71 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
;()getcar
;()stop
{
/*---------------------------------------------------------------------------------------------------------*/
;char c
/*#######################################################################*/
(main(void
}
;c=0
/*semEV = new_sem();/*allocation mémoire du sémaphore
/*semEV->compt = 0; semEV->point = NULL;/*déjà fait par new_sem
;()clrscr
/*begin_ntr(SLEEP_OFF, WAITC_OFF, WAITSEMTO_OFF);/*init mon temps réel
;("printf("Début du programme principal (EX2_NTR.C)\n
TP 72 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
}
;(waitsem(psem_te
;("printf("\t\tCorps de la tache 2\n
{
{
/*---------------------------------------------------------------------------------------------------------*/
/*tache3(void)/*priorité 100, dim tib = TAILLE void
}
;(printf("\n\t\t\tTache 3, process %3lu, priorite 100\n", exec->pid
;("printf("\t\t\tOn va se mettre en attente derriere \"*psem_te\"\n
(;;)for
}
;(waitsem(psem_te
;("printf("\t\t\tCorps de la tache 3\n
{
{
/*---------------------------------------------------------------------------------------------------------*/
(void horloge(void
}
/*int t;/*Sert de compteur
/* t = 20;/* 20x50 ms = 1 s
/*"seminit(&sem_it , 0);/*C'est un sémaphore "événement
;(attach(&sem_it, 0x1C
"printf("Début de la tâche horloge.\n
;("On va se mettre en attente derrière \"sem_it\"\n"
(;;)for
}
/*waitsem(&sem_it);/*sem attachée à l'it timer
-Fin de TP-
TP 75 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
Bon travail
TP 76 Page M TAYARI.L
A.U: 1997/1998 Sem 2 ISET DE SFAX
TP N°3
Cours de Mr: TAYARI Lassaad II N4
tache1
180
evt
1
it_timer semit HORLOGE evt5 tache5
150
evt10
tache10
130
*/
: HORLOGE DE SYNCHRONISATION DE PLUSIEURS TACHES
."Solution plus directe que l'utilisation de la primitive "sleep
.Essai du moniteur temps réel : synchro par sem, exercice no 2
Dans le noyau temps réel "ntr", on dispose d'une horloge à 55 ms
.timer de la carte mère), pour générer des interruptions)
On désire calculer 3 équations à des intervalles réguliers égaux
.respectivement à 1,1s, 5,5s, 11s
.On ne dispose que d'un seul processeur
"SOLUTION : Il faut 3 taches T1, T2, T3, la tache matérielle "it_timer
,("qui génère un "signalsem(sem_it)" (cette tâche est gérée par "ntr
.la tache "horloge" pour assurer la synchronisation avec les 3 autres
IMPLANTATION "STATIQUE" D'UN SEMAPHORE : Dans les exercices précédents, tous les
."sémaphores manipulés étaient alloués dynamiquement par la fonction "newsem
.Ici, nous avons un exemple de sémaphores définis de manière statique
/*
"include "ntr.h#
/*"/*déclaration "en avant extern void tache1(void);
/*"/*déclaration "en avant extern void tache5(void);
/*"/*déclaration "en avant extern void tache10(void);
/*"/*déclaration "en avant extern void horloge(void);
(main(void void
}
/*begin_ntr(SLEEP_OFF, WAITC_OFF, WAITSEMTO_OFF);/*init mon temps réel
;("printf("Debut du process principal ( tpntr4_1 )\n
/*/*La plus grande priorité start(horloge ,1000);
/*/*Le pp ne fait rien while(incar()!=ESC) ;
;()end_ntr
;("printf("Fin du process principal ( tpntr4_1 ), retour au DOS\n
{
:Questions
.Terminer le programme suivant pour qu'il puisse répondre à notre problème -1
.Créer votre fichier projet TP3STR.prj -2
.Compiler puis exécutez votre programme -3
Bon travail
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
ISET DE SFAX A.U: 1997/1998 Sem 2
TP N°4
II N4 Cours de Mr: TAYARI Lassaad
STR
Une tache "demandeur" désire sous traiter une partie de son activité à une autre tache
"soustraitant" en ressource commune. Pour cela, elle transmet un message précisant le type de
.travail à effectuer, puis attend le message de réponse
Dans cet exercice, il n'y a qu'un seul demandeur et un seul soustraitant, mais on
.n'utilisera qu'une seule boite aux lettres pour la demande et la réponse
Si on veut que le CPU soit donné au sous traitant quand on a déposé le message, il
faut que la priorité du sous traitant soit >= à celle du "demandeur". Mais dans ce cas où il n'y
a qu'une boite aux lettres, il faut faire une priorité tournante entre le demandeur et le sous
traitant, si on veut que le demandeur puisse faire son travail. Donc prio( demandeur )
.( =prio(soustraitant
Pour la clarté de l'exercice, les affichages de la tache "sous1traitant" commenceront
.toujours par 4 tabulations afin d'apparaitre à droite de l'écran
Ordre Ordre
Réponse Réponse
"include "ntr.h#
;int car
/*struct TMAILBOX *pmail;/*Pointeur sur la b aux lettres
(main(void void
TP 80 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
}
;()clrscr
/*begin_ntr(SLEEP_OFF, WAITC_OFF, WAITSEMTO_OFF);/*init mon temps réel
.
.
.
.
.
.
;()end_ntr
{
/*------------------------------------------------------------------------------------------------------------*/
/*/*priorité 100, dim tib = TAILLE demandeur1(void) void
}
/*/*Pour transmettre l'ordre char ordre[256[;
;char *preponse
;car = 0
;("printf("\nDebut Tache demandeur1, priorite 100\n
(while( car != ESC
}
.
.
.
.
.
{
;()stop
{
/*------------------------------------------------------------------------------------------------------------*/
/*soustraitant(void)/*priorité 100, dim tib = TAILLE void
}
/*/*Pour recevoir l'ordre char *pordre;
;char *preponse
;"preponse = "\nLe travail est execute\n
;("printf("\n\t\t\t\tDebut tache de sous traitance, priorite 100\n
(while(1
}
.
.
.
.
.
{
{
/*------------------------------------------------------------------------------------------------------------*/
(void execute(char *pordre
}
;(printf("\n\t\t\t\tJ'execute le travail %s\n", pordre
;("<--printf("\t\t\t\tPour continuer : touche quelconque
;()getcar
;("printf("\n\t\t\t\tFin de la fonction execute\n
{
TP 81 Page M TAYARI.L
A.U:1997/1998 Sem 2 ISET SFAX TP NTR Systèmes temps réel
TRAVAIL DEMANDE
PARTIE I
Complétez ce programme pour qu'il puisse répondre au spécifications du problème -1
.Créer votre fichier projet TP4STR.prj puis compilez -2
Changer les priorités des tâches "demandeur" et "sous traitant". Voir l'effet de ce -3
.changement
PARTIE II
Reprendre le même exercice en prévoyant une boite aux lettre pour les ordres et une boite -
.aux lettres différente pour les compte rendus
PARTIE III
Reprendre le même exercice avec deux boites aux lettre, mais en prévoyant deux -
.demandeurs et un sous traitant
-Fin de TP-
Bon travail
TP 82 Page M TAYARI.L
BIBLIOGRAPHIE