Sémaphore -- Qu'est ce que c'est???

Résolu/Fermé
Spaki Messages postés 38 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 23 septembre 2011 - 23 mai 2010 à 11:27
 abdi-samad - 16 nov. 2015 à 09:37
Bonjour,

Je n'arrive pas à comprendre c'est quoi une sémaphore??A quoi sa sert?? Qu'est ce que
signifie les champs P() et V()? Comment s'en servir????

J'ai bientot un examen sur ça , mais je ne comprends rien. Meme les exos basiques, j'arrive pas à les comprendre . Quelqu'un pourrait-il m'aider à répondre à ces questions???
J'ai fait des recherches sur le net , mais ça ne m'aide pas trop.

De plus, est ce que vous pouvez m'expliquer ce exercice:
il y a une imprimante sur le réseau. Elle est accessible directement. Le papier est à déroulement continue , on peut imprimer une ligne geâce à la procédure ImprimeLigne() et passer à la page suivante grâce à NouvellePage().
1 ) Ecrire un prog qui imprime un fichier donnée.


voici la réponse:
Init(Mutex,1);
P(Mutex);
Repeter :
ImprimeLigne();
NouvellePage();
V(Mutex);

C quoi Mutex ?? Pourquoi on place P(Mutex) avant d'imprimer et V(Mutex ) après l'impression?? A quoi ils servent??

Merci de m'éclaircir sur ce sujet , car ce exo est le plus simple, et je n'y arrive pas. J'ai des exos encore plus difficile.




4 réponses

tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 120
23 mai 2010 à 12:14
Un sémaphore (Mutex en anglais pour MUTual EXclusive) est un objet permettant de protéger l'accès à une ressource.

Par exemple ton imprimante. Si plusieurs utilisateurs ou processus envoient des données à l'imprimante en même temps, l'impression risque de ne pas être lisible !.

Pour éviter cela on met en place un sémaphore. Un processus teste le sémaphore avant d'imprimer : fonction P(mutex). Si le sémaphore est libre, alors P(mutex) lève le sémaphore et rend la main, si le sémaphore est levé, alors P(mutex) attend que le sémaphore soit libre, lève le sémaphore et rend la main.

Charge à toi de libérer le sémaphore avec V(mutex) après ton impression, sinon plus personne ne pourra imprimer, tu vas te faire appeler Arthur !

Compris ?
23
Spaki Messages postés 38 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 23 septembre 2011 2
23 mai 2010 à 12:25
Doncci g compris , le sémaphore permet à un processus à la fois d'accéder à la ressource .

Ainsi on initialise le sémaphore à 1 car on a 1 seul imprimante.
Ensuite le processus teste le sémaphore, s'il est à 1 , alors il est libre donc on peut imprimer. Sinon on attend que la sémaphore soit libre. Mais comment on sait que le sémaphore est libre???
Une fois le sémaphore utilisé , on doit le libérer. C sa???

Une autre question mais si on a 4 imprimante alors comment faire????
0