on suppose que les cinq processus sont placés selon le graphe .
chaque processus possède deux processus voisins .on voudrait appliquer un ordonnencement (synchronisation) sur les cinq processus . si le processus Pi exécute sa fonction Gi(), aucun de ces deux processus voisins peut exécuter sa fonction .par exemple si P2 exécute sa fonction G2() alors P1 et P3 doivent etre empecher d'exécuter leurs fonctions G1() et G3() respectivement.
en utilisant les tubes de communications (pipe) écrire le code en c nécessaire a cette synchronisation.
Nom : 20140330_111942[1].jpg
Affichages : 197
Taille : 952,4 Ko
j'ai écrit ce code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
/*j'ai utilisé 5 tubes .*/
 int t125[2],t123[2],t234[2],t345[2],t145[2];int x;
 if(i==1)
 {read(t123[0],&x,sizeof(int));
 read(t145[0],&x,sizeof(int));
 G1();
 write(t125[1],&x,sizeof(int));
 write(t125[1],&x,sizeof(int));
 }
 if(i==2)
 {read(t125[0],&x,sizeof(int));
 read(234[0],&x,sizeof(int));
 G2();
 write(t123[1],&x,sizeof(int));
 write(t123[1],&x,sizeof(int));
 }
 if(i==3)
 {read(t123[0],&x,sizeof(int));
 read(t345[0],&x,sizeof(int));
 G3();
 write(t234[1],&x,sizeof(int));
 write(t234[1],&x,sizeof(int));
 }
 if(i==4)
 {read(t234[0],&x,sizeof(int));
 read(t145[0],&x,sizeof(int));
 G4();
 write(t345[1],&x,sizeof(int));
 write(t345[1],&x,sizeof(int));
 }
 if(i==5)
 {read(t125[0],&x,sizeof(int));
 read(t345[0],&x,sizeof(int));
 G5();
 write(t145[1],&x,sizeof(int));
 write(t145[1],&x,sizeof(int));
 }