0% ont trouvé ce document utile (0 vote)
3 vues3 pages

SE TD5 SynchronisationProcessus

Le document présente une série d'exercices sur les systèmes d'exploitation, abordant des concepts tels que la gestion des processus, l'utilisation des sémaphores pour l'exclusion mutuelle et la synchronisation, ainsi que des problèmes classiques comme la gestion du trafic aérien et le salon de coiffure. Chaque exercice propose des scénarios spécifiques et demande des solutions ou des analyses des mécanismes de synchronisation. Les exercices incluent également des questions sur les valeurs finales des variables partagées et la nécessité de sémaphores supplémentaires.

Transféré par

maram.hadjali
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues3 pages

SE TD5 SynchronisationProcessus

Le document présente une série d'exercices sur les systèmes d'exploitation, abordant des concepts tels que la gestion des processus, l'utilisation des sémaphores pour l'exclusion mutuelle et la synchronisation, ainsi que des problèmes classiques comme la gestion du trafic aérien et le salon de coiffure. Chaque exercice propose des scénarios spécifiques et demande des solutions ou des analyses des mécanismes de synchronisation. Les exercices incluent également des questions sur les valeurs finales des variables partagées et la nécessité de sémaphores supplémentaires.

Transféré par

maram.hadjali
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ENICarthage 2ème année Génie Informatique

SYSTEMES D’EXPLOITATION
SERIE N°5

Exercice 1 :

On considère trois processus P1, P2 et P3 qui partagent une même variable (x initialisée à 3) :

P1 P2 P3
(a) P(S) ; (d) P(S) ; (g) P(S) ;
(b) x = x + 1 ; (e) x = x * 2 ; (h) x = x - 4 ;
(c) V(S) ; (f) V(S) ; (i) V(S) ;
1. Que doit être la valeur initiale du sémaphore S ?
2. On considère le scénario d’exécution suivant : a, d, b, g, c, e, f, h, i :
a. Est-il possible?
b. Si oui quelle est la valeur finale de x ?
3. Même questions avec le scénario a, d, e, b, c, f, g, h, i.
4. Donner les valeurs finales possibles pour x.

Exercice 2 :
On considère les processus P1 et P2 suivants :
· P1 est un processus qui fait augmenter de 1 la valeur d'une variable X et reste bloqué si cette valeur atteint 4 ;
· P2 est un processus qui fait diminuer de 1 la valeur de la variable X et reste bloqué si X=0.
On envisage d’utiliser des sémaphores pour assurer l’exclusion mutuelle et la synchronisation des deux
processus. Une solution est présentée ci-dessous :

Processus P1 Processus P2
Répéter indéfiniment Répéter indéfiniment
P(exMut) P(exMut)
P(S1) P(S2)
Lire X Lire X
X=X+1 X=X-1
Ecrire X Ecrire X
V(S2) V(S1)
V(exMut) V(exMut)
La variable X est initialisée à zéro ; l’initialisation des sémaphores est la suivante : S1 à 4, S2 à 0 et exMut à 1.
1. Précisez l’utilité de chacun des sémaphores utilisés.
2. Que pensez-vous de cette solution :
a. Est-elle correcte ? Pourquoi ?
b. Faudrait-il un sémaphore supplémentaire ?
3. Proposez votre solution.

Exercice 3 :

Le but de cet exercice est la gestion du trafic aérien. On ne dispose que d’une seule piste à la fois d'atterrissage et
de décollage. En plus, cette piste ne peut accepter qu'un seul avion quelque soit la manœuvre (atterrissage ou
décollage). Pour cela, on dispose de deux files d'attente :
- en air de taille N pour les avions souhaitant atterrir
- et au sol de taille M pour les avions souhaitant décoller.

La gestion de ce trafic des avions nécessite, alors, quatre fonctions :


• une fonction SortirAvions ( ) qui fait sortir les avions du hangar (dépôt) et les placer dans la file d’attente de
décollage,

Page 1 sur 3
• une fonction Decollage ( ) qui prend un avion cloué en sol dans la file d’attente de décollage et le fait
décoller en utilisant la piste,
• une fonction AmenerAvions ( ) qui fait entrer, dans la file d’attente d’atterrissage, des avions en vol
• et une fonction Atterrissage ( ) qui prend un avion de la file d’attente d’atterrissage et le fait atterrir en
utilisant la piste.

Ciel AmenerAvions
()
Taille :+

Atterrissage ( )  Decollage ( ) SortirAvions (


Hangar
 )
Taille :
Piste
+

1. Quelle est l’utilité de chaque sémaphore ?

2. Donner une solution au problème en complétant le pseudo code suivant :


#define N 5
#define M 5
semaphore Decollage_vide, Decollage_plein, Atterrissage_vide, Atterrissage_plein, Piste;
Sem_Init (Decollage_vide, M); Sem_Init (Decollage_plein, 0);
Sem_Init (Atterrissage_vide, N); Sem_Init (Atterrissage_plein, 0);
Sem_Init (Piste, 1);
void SortirAvions ( )
{
……………………………………………………………………………………………..
Ajouter_un_avion_dans_la_zone_attente_decollage( );
……………………………………………………………………………………………..
}
void Decollage ( )
{
……………………………………………………………………………………………..
Faire_decoller_un_avion ( );
……………………………………………………………………………………………..
}
void AmenerAvions ( )
{
……………………………………………………………………………………………..
Ajouter_un_avion_dans_la_zone_attente_atterrissage( );
……………………………………………………………………………………………..
}
void Atterrissage ( )
{
……………………………………………………………………………………………..
Faire_Atterrir_un_avion ( );
……………………………………………………………………………………………..
}

Exercice 4 :
Une illustration classique du problème de la synchronisation est celui du salon de coiffure.
Dans ce salon, il y a un coiffeur, un fauteuil dans lequel se met le client pour être coiffé et N sièges pour
attendre.
o En absence de clients, le coiffeur somnole dans le fauteuil.

Page 2 sur 3
oQuand le premier client arrive, il doit réveiller le coiffeur. Ce dernier se lève et le client s'assoit
alors pour se faire coiffer.
o Cependant si un client arrive pendant que le coiffeur est entrain de travailler :
▪ il s'assoit et attend si un des N sièges est libre,
▪ sinon il sort.
Il s'agit donc de synchroniser les activités du coiffeur et de ses clients avec des sémaphores. L’entête du
programme est comme suit :
#define N 5
semaphore SClient, SCoiffeur, exMut ;
Sem_Init (SClient, 0); //initialisation du sémaphore
Sem_Init (SCoiffeur, 0);
Sem_Init (exMut, 1);
int waiting = 0 ; //nombre de clients en attente
void Coiffeur()
{……………………………………………………………………………………………..
}
void Client()
{……………………………………………………………………………………………..
}

On suppose l’existence de deux fonctions coiffer() et se_faire_coiffer() et on vous demande de :


1. Détaillez le code de deux fonctions Coiffeur et Client.
2. Précisez le rôle de chacun des sémaphores SCleint, SCoiffeur et exMut ?
3. Refaire la solution en utilisant les moniteurs
Exercice 5 :
Soient les deux processus P1 et P2 suivants qui se partagent deux sémaphores : S1 et S2 initialisées à 0.

void P1 ( ) void P2 ( )
{ {
procedure A1; procedure A2;
V(S2); V(S1);
P(S1); P(S2);
procedure B1; procedure B2;
} }

Quelle synchronisation a-t-on imposée sur les exécutions des procédures A1, A2, B1 et B2? Donner le graphe
de précédence correspondant.
1. Modifier les programmes afin d’avoir le graphe de précédence suivant :
a.
P1 P2

b.
A1 A2 B1 B2
Exercice 6 :
En utilisant les moniteurs :
a. Donner la solution de lecteurs/écrivain
b. Donner la solution de repas des philosophes

Page 3 sur 3

Vous aimerez peut-être aussi