Salut tout le monde,
Voila je vous écrit, car je rencontre quelques difficultés avec le problème / Code, suivant:
Le principe est hérité des chemins de fer.
Lorsque le sémaphore est levé, le processus P peut continué
son chemin, lorsqu´il est baissé il doit attendre jusqu´a
ce qu´un autre processus Q le lève.
Dans ce modèle il existe trois primitives:
- Lever(c) fait passer le sémaphore c de la valeur "Baissé" à "Levé"
- Baisser(c) fait passer le sémaphore c de la valeur "Levé" à "Baissé"
- Flag(c) retourne vrai si le sémaphore c est baissé.
Le principe est le transfert de résultat au moyen d´un tampon.
Le fonctionnement est le suivant:
Processus P
Baisser(e);
While (Calculs à faire){
calculs des éléments du tampon(a);
baisser(e);
if (flag(f)) {
attendre(f);
}
écrire tampon (a);
lever(e);
Processus Q
Lever(f);
While (élément à transférer) {
if (flag(e)) {
attendre(e)
}
baisser(f);
lire tampon(a);
lever(f);
}
Personnellement je traduis ce pseudo code C de la manière suivante :
Processus P
Lorsque le sémaphore est levé, P peut continué son chemin.
Lorsqu’il est baissé, il doit attendre que Q ce leve.
On baisse P
Pendant qu’il calcul les éléments du tampon (a)
Si Q est baissé on attend
Sinon
On écrit dans le tampon
Et on lève P.
Processus Q
On lève Q
Pendant qu’ils transfert les éléments
Si P est baisser
On attend
Baisser Q
Lire le tampon (a)
Lever (f)
Voila je bloque sur la traduction de ce pseudo code C depuis quelques jours, c’est pourquoi je poste sur ce forum.
J’aimerais bien aussi vous posez trois petite question svp.
Ma traduction est-elle bonne ?
E correspond au processus P, et f correspond au processus Q. C’est ça ?
En ce qui concerne la primitive suivante :
- Flag(c) retourne vrai si le sémaphore "c" est baissé.
Que veut elle vraiment dire ?
Je vous remercie d’avance pour votre aide, ça serait vraiment gentil.
Je voulais poster sur le Forum entraide scolaires, mais j´avais peur de ne pas avoir de réponse et la programmation étant le métier que j´étudie j´ai décider de poster ici.
Je m´excuse si cela ne conviens pas :s
et Je m’excuse aussi pour les éventuels fautes d’orthographe, je suis pas très forte …
A bientôt.