• Aucun résultat trouvé

CHAPITRE 4 R´ ESEAUX DE PROCESSUS TEMPS-R´ EEL

4.3 Applications aux syst`emes embarqu´es

Les RTPN, avec les canaux d´efinis `a la section 4.1.2, peuvent ˆetre utilis´es pour mod´eliser plusieurs aspects des syst`emes temps-r´eels, tels que les communications par m´emoire partag´ee, les senseurs ´echantillonn´es, les p´eriph´eriques d’entr´ee/sortie et les contraintes temps-r´eel. On indique aussi comment ce mod`ele de calcul s’applique `a la mod´elisation des applications embarqu´ees r´ealis´ees avec SPACE.

4.3.1 M´emoire partag´ee

Un canal 1-REG peut mod´eliser une m´emoire partag´ee pouvant contenir un jeton et utilis´ee par un producteur et un consommateur. Cette mod´elisation se g´en´eralise `a une m´e- moire partag´ee pouvant contenir N jetons (tel un bloc de m´emoire RAM) en pla¸cant entre le producteur et le consommateur N canaux 1-REG en parall`ele.

Tel que discut´e `a la section 4.2.1, cette m´emoire partag´ee se comporte alors comme un KPN classique pour un ordonnancement t si et seulement si t (we(c, i)) < t (re(c, i)) , ∀i et

t (re(c, i)) < t (we(c, i + 1)) , ∀i. Supposons qu’on ait les relations de pr´ec´edence we(c, i) <

re(c, i) , ∀i et re(c, i) < we(c, i + 1) , ∀i (ces relations de pr´ec´edence ne seraient pas caus´ees

par l’utilisation de la m´emoire partag´ee elle-mˆeme, mais plutˆot par l’´echange direct ou indirect de jetons de synchronisation entre le producteur et le consommateur via d’autres canaux).

´

Etant donn´e que x < y implique t(x) < t(y), on obtiendrait alors que la m´emoire partag´ee se comporte comme un canal Kahn pour tout ordonnancement t. Le comportement obtenu est alors que le producteur ´ecrive une donn´ee dans le canal 1-REG, que le consommateur lise une donn´ee, puis que le producteur ´ecrive une nouvelle donn´ee et ainsi de suite. Cela d´emontre que l’acc`es `a une ressource partag´ee peut respecter la s´emantique des KPN s’il est fait de mani`ere disciplin´ee. C’est l’´equivalent de l’utilisation d’une section critique pour prot´eger l’acc`es `a une ressource partag´ee dans la programmation multi-tˆaches.

Les r´eseaux de processus Kahn sont fr´equemment impl´ement´es `a l’aide de m´emoire parta- g´ee. La mod´elisation pr´esent´ee ici permet de r´ealiser le chemin inverse et de d´eterminer dans quelles circonstances une application utilisant de la m´emoire partag´ee se comporte comme un r´eseau de processus Kahn. Pour simplifier la notation, on repr´esentera une m´emoire partag´ee par un processus sp´ecial nomm´e mem, tel que pr´esent´e `a la figure 4.6.

4.3.2 Senseur ´echantillonn´e

Les entr´ees d’un syst`eme temps-r´eel prennent souvent la forme d’un senseur ´echantillonn´e p´eriodiquement. Lorsque le senseur est ´echantillonn´e, la valeur ´echantillonn´ee remplace la valeur pr´ec´edente. Si le syst`eme n’avait pas eu le temps de lire la valeur pr´ec´edente, alors

p

mem

c

Figure 4.6 Producteur et consommateur communiquant via une m´emoire partag´ee.

celle-ci est perdue et ne sera pas trait´ee. Cela correspond au comportement d’un canal 1- BREG.

Un syst`eme comprenant de telles entr´ees ne se comporte pas comme un KPN dans le cas g´en´eral et ne peut donc pas ˆetre mod´elis´e par un KPN. On peut cependant le mod´eliser `a l’aide d’un RTPN qui se comporte comme un KPN classique pour un ordonnancement total t si et seulement si t (re(c, i)) < t (we(c, i + 1)) , ∀i. Cela indique qu’il se comporte comme un

KPN si une donn´ee est lue avant que la donn´ee suivante ne soit ´ecrite. 4.3.3 P´eriph´eriques d’entr´ee et de sortie

Les entr´ees d’un syst`eme temps-r´eel peuvent aussi comprendre des p´eriph´eriques tel qu’un ´emetteur-r´ecepteur asynchrone universel (UART). Un UART poss`ede un FIFO interne de 16 octets. Si l’environnement ´ecrit un 17e octet dans le FIFO avant que le 1er octet n’ait ´et´e

lu par le syst`eme, le 16e octet sera ´ecras´e. On peut mod´eliser cette entr´ee `a l’aide d’un 16-

BREG tel qu’un jeton corresponde `a un octet. Ce syst`eme est alors un RTPN qui se comporte comme un KPN classique pour un ordonnancement total t si et seulement si t (re(c, i)) <

t (we(c, i + 16)) , ∀i.

De la mˆeme mani`ere, si l’UART est utilis´e comme une sortie du syst`eme, alors il faut s’assurer que l’environnement ait le temps de consommer les valeurs produites par le syst`eme. On mod´elise de la mˆeme mani`ere le canal de sortie comme un 16-BREG et on lui associe la mˆeme contrainte temporelle si on veut que le RTPN se comporte comme un KPN. Le mˆeme raisonnement peut s’appliquer `a tout p´eriph´erique d’entr´ee/sortie qui utilise des FIFO d’entr´ee et de sortie de taille finie.

4.3.4 Contraintes temps-r´eel

Une caract´eristique fondamentale des syst`emes temps-r´eel est l’existence de contraintes sur le temps de production des sorties. On peut mod´eliser ce ph´enom`ene en utilisant un canal POLL pour la sortie et en faisant en sorte que l’environnement lise la sortie au moment o`u la contrainte temporelle vient `a ´ech´eance. Si le syst`eme produit la sortie assez rapidement, alors le syst`eme se comporte comme un KPN classique. Sinon, l’environnement lit une valeur

absente et cela correspond `a une violation de la contrainte temps-r´eel. Cela correspond `a une contrainte t (a (c, i)) < t (re(c, i)) , ∀i sur les canaux de sortie. Les temps de consom-

mation des sorties peuvent soit ˆetre d´efinis de mani`ere absolue (par exemple, une sortie est consomm´ee `a chaque seconde) ou de mani`ere relative (par exemple, une sortie est consom- m´ee par l’environnement une seconde apr`es que celui-ci ait produit une entr´ee donn´ee). On peut combiner les contraintes temps-r´eel sur le fonctionnement du syst`eme embarqu´e avec les contraintes temporelles sur le fonctionnement des p´eriph´eriques d’entr´ee/sortie en utilisant un canal N-REG plutˆot qu’un canal POLL pour le canal de sortie.

4.3.5 Mod´elisation d’une application SPACE par un RTPN

La figure 4.7 donne un exemple d’un syst`eme embarqu´e mod´elis´e `a l’aide d’un RTPN alors que la figure 4.8 repr´esente la sp´ecification ex´ecutable associ´e `a ce RTPN. Tel que pr´esent´e `a la section 3.2.2, chaque module d’une application dans SPACE est un processus s´equentiel et d´eterministe et on fait donc correspondre `a chaque module un processus du RTPN (p1

`a p7 sur la figure 4.7). On ajoute ´egalement un processus correspondant `a l’environnement,

selon le banc d’essai et les contraintes temporelles fournies avec la sp´ecification ex´ecutable (ce processus n’est pas illustr´e pour des raisons de simplification). Les sections pr´ec´edentes indiquent comment mod´eliser la m´emoire partag´ee (mem) de mˆeme que les p´eriph´eriques d’entr´ee/sortie (canal d’entr´ee 16-REG) et les contraintes temps-r´eel (canal de sortie POLL). Afin d’´eviter d’avoir `a mod´eliser un grand nombre de canaux 1-REG, on peut supposer que les acc`es faits aux m´emoires partag´ees par les processus de l’application SPACE sont faits d’une mani`ere disciplin´ee qui respecte la s´emantique des r´eseaux de processus Kahn, tel que d´ecrit `a la section 4.3.1.

Les communications entre modules dans SPACE se font au moyen d’une s´emantique FIFO, comme dans un RTPN. Les canaux RTPN peuvent donc ˆetre utilis´es pour mod´eliser les fonctions transactionnelles de communication de SPACE. Si un module x envoie des donn´ees au module y et que celui-ci les lit `a l’aide d’une lecture bloquante, alors on ajoute au RTPN un canal Kahn de donn´ees qui va du processus RTPN x au processus y. Si y effectue plutˆot une lecture non-bloquante, alors on ajoute un canal POLL de donn´ees qui va de x `a y. Pour des raisons de simplification, on exige que les lectures effectu´ees par y sur les envois de donn´ees de x soient soit toujours bloquantes, soit toujours non-bloquantes. Par contre, le module x peut alterner de mani`ere arbitraire les ´ecritures bloquantes et les ´ecritures non-bloquantes.

Une ´ecriture bloquante dans SPACE ne signifie pas que l’´ecriture bloque seulement lorsque le canal est plein, mais plutˆot qu’il s’agit d’une ´ecriture par rendez-vous, qui bloque jusqu’`a ce que la lecture ait ´et´e acquitt´ee par le module consommateur. On mod´elise une telle ´ecriture

`a la figure 4.9 par l’ajout d’un canal d’acquittement de type Kahn qui va du processus y consommateur au processus x producteur. Le processus RTPN associ´e au module x annote les jetons ´ecrits dans le canal de donn´ees avec un bit qui indique si l’´ecriture de ce jeton est bloquante ou non. Apr`es l’´ecriture bloquante d’un jeton, le canal x effectue une lecture (blo- quante) sur le canal d’acquittement. Lorsque le processus y re¸coit et lit ce jeton, il envoie un jeton sur le canal d’acquittement si le bit annot´e indique qu’il s’agit d’une ´ecriture bloquante. Si le module y doit ´egalement envoyer des donn´ees `a x, alors on ajoute un canal de donn´ees de y vers x et un canal d’acquittement de x vers y, et ainsi de suite pour chaque paire de modules qui communiquent entre eux.

16-REG p1 p2 p3 mem p4 p5 p7 POLL p6

Figure 4.7 Mod´elisation d’un syst`eme em- barqu´e par un RTPN.

Figure 4.8 Sp´ecification ex´ecutable parall`ele d’un syst`eme embarqu´e avec SPACE.

p data c

ack