l'amitier
Systèmes d’exploitation 2
TD n 2 : Synchronisation des processus
Mme Lilia SFAXI
Systèmes d’exploitation 2
Systèmes d’exploitation 2
TD n 2 : Synchronisation des processus
Exercice 1 : Algorithmes d’Exclusion mutuelle
1. Rappeler brièvement les exigences d'un bon mécanisme de contrôle d'accès à une section critique.
Les exigences d'un bon mécanisme de contrôle d'accès à la section critique sont: a- Deux processus ne peuvent se trouver simultanément dans le section critique (exclusion mutuelle). b- Il ne faut pas faire de suppositions quant à la vitesse ou au nombre de processus mis en œuvre. c- Aucun processus s'exécutant à l'extérieur de sa section critique ne doit bloquer d'autres processus. d- Aucun processus ne doit attendre indéfiniment pour pouvoir entrer dans la section critique.
(attente bornée)
2. Rappeler l’algorithme de l’alternance stricte. Citer certains inconvénients de cet algorithme.
3. On propose dans ce qui suit un algorithme pour une nouvelle version de l’alternance stricte. void entrer_SC(int MonNumero) { //MonNumero=0 pour P0, 1 pour P1 flag0 = true; while(flag1 == true) ; /* attente active */
}
void liberer_SC(int MonNumero) { flag0 = false;
}
Cet algorithme respecte-il les 4 conditions précédemment citées ? Sinon, donner un exemple explicatif pour l’une des conditions violées.
1
TD2 : Introduction à la synchronisation des processus
L’idée ici est d’indiquer à l’aide d’un drapeau l’intention d’entrer en section critique, et de n’y entrer que si aucun processus n’a signalé son intention d’y entrer (à l’aide d’un autre drapeau).
Cet algorithme illustre le cas d’un excès de courtoisie : si les deux processus P0 et P1 mettent leurs flags à true, alors chacun des deux va attendre que l’autre libère le flag : interblocage !
4. Soit l’algorithme suivant :
//Pour le thread Pi : while(true){ veut[i]=true ; // je veux entrer en SC tour = j;
// je donne une chance à l'autre