Académique Documents
Professionnel Documents
Culture Documents
Q1 : Donnez deux
x signaux existant sous Unix. Quel est leur effet par défaut
aut sur le processus
les recevant ? comment ignoré ces deux signaux ?
Nous utilisons l’algorithme de baquier qui est base sur le principe de trouver un ordre
d’execution des processus dans l’etape d’allocation des resources en evitant
evitan la presence
d’interblocage (1pt)
Q3 : Qu’advient-il
il au mutex associé à une condition pthread lors de l’appel à la fonction
pthread_cond_wait ?
le mutex est automatiquement déverrouillé ; (1pt)
Q4 : Qu’est-ce
ce qu’une variable atomique ?
une variable que l’on peut lire, modifier et réécrire sans risque
risq de course critique ; (1pt)
1
Exercice N°1(3 pts)
1process coiffeur
2 while true do
3 p(client);
4 p(mutex);
5 attent = attent-1;
6 v(coiffeur);
7 v(mutex);
8 { couper les cheveux };
9 endwhile;
10 endprocess;
11 process client
12 p(mutex);
13 if (attent < chaise) then
14 attent = attent+1;
15 v(client);
16 v(mutex);
17 p(coiffeur);
18 { se faire couper les cheveux
19 else
20 v(mutex);
21 endif;
22 endprocess;
La valeur d'attente pourrait être corrompue si deux processus exécutaient les lignes 5 et 14 en
même temps. Cela pourrait faire attendre les processus alors qu'ils ne devraient pas, ou vice
versa. (1pt)
2
Cela entraînerait un blocage, car le client bloquerait avant de libérer l'exclusion mutuelle.
Aucun autre processus ne pourrait progresser, car ils s'arrêteraient tous aux lignes 4 ou 12.
(1pt)
Les processus clients ne se réveilleraient jamais pour leur coupe de cheveux. (1pt)
Exercice N°2(4pts)
Dans un lavomatique, on cherche une solution pour permettre de repartir les M machines à
laver entre les clients. Chaque machines à laver est identifiée par un numéro. . Pour obtenir
une machine, chaque client doit utiliser la fonction allouer-machine(). Après usage de la
machine, il doit utiliser liberer-machine().
Deux procédures sont utilisées :
Moniteur machine-laver ()
Occupé : tableau [1..M] : booléen (initialisé a faux)
Nbre-machine : sémaphore initialisé a M
client: condition de file d’attente
Num : entier
Debut
fin
3
Debut
Occupé[num]=faux
Signal(client)
fin
Exercice N°3(5pts)
Disponible(r1=0,r2=0,r3=0)
R1 R2 R3
P1 0 1 0
P2 1 1 0 Allocation
P3 0 0 1
P4 0 1 1
R1 R2 R3
P1 1 0 0
P2 0 0 1 Requête
P3 0 1 0
P4 0 0 0
4
Q4: Y a-t-il un inter-blocage dans le graphe d’ollocation des ressources de ce systeme?
Pourquoi?
Solution (1pt)
Réponse: Non, il n'y a pas de blocage dans ce système. Lorsque P4 aura terminé, il
libérera son instance de R2 et R3. Ensuite, les deux P3 et P2 peuvent procéder à leur
exécution et terminer, libérant leurs instances de R2, R1 et R3. Ensuite, P1 peut
continuer et terminer l'exécution.
Etat sain = p4-> p2-> p1-> p3 (application algorithme de banquier)
Disponible = (1, 2, 2, 0)
R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4
P1 0 0 1 2 P1 0 0 2 3 P1 0 0 0 1
P2 1 3 5 4 P2 2 3 5 6 P2 1 0 0 0
P3 1 0 0 0 P3 1 2 2 0 P3 0 1 1 0
P4 0 0 0 1 P4 2 2 0 1 P4 2 2 0 0
Disponible(1 2 2 0) (0,5pt)
Allocation(2 3 6 7)
Total(3 5 8 7)
Besoin = max-allocation
R1 R2 R3 R4
P1 0 0 1 1
P2 1 0 0 2
besoin
P3 0 2 2 0
P4 2 2 0 0
5
Disponible = disponible-requete = (1 2 2 0)-(1 0 0 0)= (0 2 2 0)
Besoin=besoin –requete=(1 0 0 2)-(1 0 0 0) = (0 0 0 2)
Allocation allocation + requete = (1 3 5 4) + (1 0 0 0) = (2 3 5 4)
Il y a un situation d’interblocage de p1 p2 et p4
samir, abbes et youcef plantent des grains( )اﻟﺒ ﺬورen continu. samir creuse les trous. abbes
place ensuite une graine dans chaque trou. youcef remplit ensuite le trou. Il existe plusieurs
contraintes de synchronisation:
1. abbes ne peut planter une graine que s'il existe au moins un trou vide.
2. youcef ne peut remplir un trou que s'il existe au moins un trou dans lequel abbes a planté
une graine, mais le trou n'a pas encore été rempli.
3. youcef se soucie que samir n'ait pas plus de MAX trous devant lui. Ainsi, s'il y a MAX
trous non remplis, samir doit attendre.
4. Il n'y a qu'une seule pelle( )ﻣﺠﺮﻓ ﺔavec la quelle samir et youcef doivent creuser et remplir
les trous, respectivement.
6
Samir abbes youcef
{ { {
While(1) { While(1) { While(1) {
P(****) P(****) P(****)
P(****) Planter-grains() P(****)
Creuser-trou() V(****) Remplir-trou()
V(****) V(****)
V(****) } V(****)
} } }
} }
Solution
Q2 : donnez les contraintes d’exclusion mutuelle entre les trois processus. (0,5pt)
{ { {
While(1) { While(1) { While(1) {
P(pelle) P(plante) P(rempli)
P(non-rempli) Planter-grains() P(pelle)
Creuser-trou() V(rempli) Remplir-trou()
V(plante) V(non-rempli)
V(pelle) } V(pelle)
} } }
} }