Processus et synchronisation

pilos -  
 serge -
Bonjour à tous, j'ai un exercice qui complique ma vie, s'il y a quelqu'un qui peut m'aider je serais reconnaissant. Voilà l'enoncé:

Dans un système, on a un processus qui produit des boules blanches (représentant des atomes d’hydrogène),
et un processus qui produit des boules rouges (représentant des atomes d’oxygène). Ils utilisent
pour cela la fonction CreerBoule qui prend en entrée le type de boule (Oxy ou Hydro) et renvoie
une boule (de type Tboule). Les boules sont placées dans deux récipients séparés, suivant leur couleur :
RecipHydro pour les blanches (l’hydrogène), RecipOxy pour les rouges (l’oxygène). Deux processus
assembleur construisent (chacun indépendamment) des ensembles de trois boules, toujours une rouge
et deux blanches (ça donne une molécule d’eau), et placent le résultat dans un troisième récipient de
nom RecipEau. La molécule d’eau est renvoyée par la fonction SyntheEau, qui prend en paramètres
d’entrée 2 boules blanches et une rouge.
Les récipients intermédiaires sont de taille finie ; ils contiennent MaxHydro et MaxOxy boules. Le troisième
est de taille infinie. On dispose des primitives prendre et mettre, qui prennent en paramètre le
nom du récipient et qui permettent de prendre ou de mettre 1 boule (en paramètre). L’accès à un récipient
ne peut se faire que par un processus à la fois (mais 2 processus doivent pouvoir accéder en même temps
à des récipients différents).
Question 2.1 : Analyse
1. Quels sont les processus dans ce problème ?
2. Quelles sont les ressources critiques ?
3. Quels sont les problèmes d’exclusion mutuelle ?
4. Quels sont les problèmes de synchronisation ?
5. De quel problème classique celui-ci se rapproche-t-il le plus ?
Question 2.2 : Solution utilisant les sémaphoresDonner une solution à ce problème en utilisant des sémaphores. Pour ce faire, donner le code de chaque
type de processus, ainsi que le programme principal (avec la séquence d’initialisation).
Question 2.3 : Solution utilisant les moniteursDonner maintenant une solution à ce problème en utilisant des moniteurs. Pour ce faire, donner le code
de chaque type de processus, ainsi que le programme principal (avec la séquence d’initialisation).
Remarques :
1. pour la solution utilisant les moniteurs, il est possible d’utiliser au choix des moniteurs de Hoare, de Brinch
Hansen, ou des pseudo-moniteurs de type JAVA (préciser le type choisi).
2. pour le code, tout langage algorithmique ou de programmation est accepté à condition qu’il soit clair et que
la même syntaxe soit utilisée partout ;
3. le code doit être intelligemment commenté, en particulier les appels aux primitives des sémaphores et des moniteurs.

merci infiniment

1 réponse

serge
 
Bonjour à tous, j'ai un exercice qui complique ma vie, s'il y a quelqu'un qui peut m'aider je serais reconnaissant.
j'ai besoin de la solution pour le vendredi s'il vous plaît aidez moi.
Voilà l'enoncé:

On dispose d'un pont à voie unique dans les deux sens

a- Ecrire un programme utilisant les semaphores pour gerer la fluidité de trafic sur le pont.

b- Les exclusions effectuées ont permis d'avoir un pont à deux voies dans les deux sens

- Proposer une solution utilisant les semaphores pour permettre à deux voitures de passer en une seule fois
- Proposer une solution utilisant les semaphores pour permettre à deux voitures de passer dans le même sens
- Proposer une solution utilisant les semaphores pour permettre à deux voitures de passer dans les deux sens

c- Expliquer des situations d'interblocage utilisant a-/ et b-/
1