Vous êtes sur la page 1sur 7

Université Aboubekr BELKAID

‫ﻛﻠﯿﺔ اﻟﻌﻠﻮم – ﺗﯿﺠﺎﻧﻲ ھﺪام‬


Faculté des Sciences – Tidjani HAddam
‫ﻗﺴﻢ اﻹﻋﻼم اﻵﻟﻲ‬
Département d’informatique

Classe LMD S5 Informatique Date 26/01/2020


Année Universitaire : 2019 / 2020
20
Mr Benaissa Mohamed Examen N°1 : Module système d’exploitation

Questions de cours : (5pts)

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 ?

Ctrl + c = SIGINT = interlope un processus (1pt)


Ctrl + z = SIGTSTP = stopper l’execution d’un processus
Pour ignorer ces deux signaux nous utilisons l’option SIG_IGN

Q2 : Comment prévenir les inter blocages ? Donnez et expliquez une méthodes.


éthodes.

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)

Q5 : Pourquoi le partage de ressources pose des problèmes dans un système multiprogrammé


en temps partagé ?
Parce qu’il y a un problème de concurrence et d’exclusion mutuelle pour accéder a des
ressources critiques. (1pt)

1
Exercice N°1(3 pts)

Nous Considérons le protocole suivant pour le problème du coiffeur endormi:

const int chaise=5;


int attent=0;
semaphore e(client)= 0;
semaphore e(coiffeur)=0;
semaphore e(mutex)= 1;

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;

Q1: Comment le comportement du protocole changerait-il si les lignes 4, 7, 12, 16 et 20


étaient supprimées

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)

Q2: Comment le comportement du protocole changerait-il si les lignes 16 et 17 étaient


échangées?

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)

Q3 : Comment le comportement du protocole changerait-il si la ligne 6 était supprimée?

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 :

Allouer -machine (var num-machine : 1….M)


liberer-machine (var num-machine :1….M)

Q1-donnez les conditions de blocage des clients


Les clients sont bloqués si le nombre de machine disponible = 0(1pt)

Q2-resoudre se problem avec les moniteurs.

Solution avec les moniteurs

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

Procedure allouer-machine ()(1,5pt)

Debut

Si nbre-machine> M alors wait(client)


Nbre-machine++
Num=1
Tant que occupé[num] alors num++
Occupé[num]=vrai

fin

Procedure liberer-machine (int Num) (1,5pt)

3
Debut
Occupé[num]=faux
Signal(client)

fin

Exercice N°3(5pts)

Vous avez le systeme suivant :

Q1: Donnez le vecteur total et disponible des resources


Vecteur total(r1=1,r2=3,r3=2) (0,5pt)

Disponible(r1=0,r2=0,r3=0)

Q2: Donnez la matrice d’allocation(0,5pt)

R1 R2 R3
P1 0 1 0
P2 1 1 0 Allocation
P3 0 0 1
P4 0 1 1

Q3: Donnez la matrice requete(0,5pt)

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)

2) Vous avez le nouveau système suivant :

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

Allocation Max Requête

Q1 : Déduire le vecteur total des ressources dans le système.

Disponible(1 2 2 0) (0,5pt)

Allocation(2 3 6 7)
Total(3 5 8 7)

Q2 : calculez la matrice besoin de ce systeme (0,5pt)

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

Q3 : la demande de p2 peut-elle être accordée immédiatement? (0,5pt)

Requete p2(1 0 0 0)<= besoin p2(1 0 0 2) oui


Requete p2 < = disponible (1 2 2 2 ) oui
Requete p2 est acceptée
Voila le changement :

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)

Q4 : si la demande de p2 est accordée immédiatement, le système entre-t-il dans


l’interblocage? (1pt)

Besoin p1(0 0 1 1) <= disponible(0 2 2 0) non


Besoin p2 (0 0 0 2)<= disponible( 0 2 2 0) non
Besoin p3(0 2 2 0)<= disponible(0 2 2 0) oui
P3 termine son execution
Disponible=disponible + allocation p3 = (0 2 2 0 )+ (1 0 0 0)= (1 2 2 0)
Besoin p4(2 2 0 0)<= disponible(1 2 2 0) non

Il y a un situation d’interblocage de p1 p2 et p4

Exercice N°4 (4 pts)

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.

Q1 : donnez les contraintes de synchronisation entre les trois processus.


Q2 : donnez les contraintes d’exclusion mutuelle entre les trois processus.
Q3 : Complétez le code suivant en respectant les contraintes de synchronisation et
d’exclusion mutuelle trouvées.

Semaphore pelle =**


Semaphore non-rempli =**
Semaphore plante = **
Semaphore rempli =**

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

Q1 : donnez les contraintes de synchronisation entre les trois processus. (0,5pt)

En ne peut pas planter jusqu'à creuser


En ne peut pas remplir le trou jusqu’a planter

Q2 : donnez les contraintes d’exclusion mutuelle entre les trois processus. (0,5pt)

Il y a un exclusion mutuelle ente abbes et youcef dans l’utilisation de pelle(‫)ﻣﺠﺮﻓ ﺔ‬

Le premier qui commence c’est samir


Semaphore pelle =1
Semaphore non-rempli =Max
Semaphore plante = 0
Semaphore rempli =0

Samir(1pt) abbes(1pt) youcef(1pt)

{ { {
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)
} } }
} }

Vous aimerez peut-être aussi