SYSTÈMES D'EXPLOITATION 2
DEVOIR SURVEILLÉ
Questions de Cours
1- Est-ce que le problème de synchronisation de processus se pose dans le cas d’un système
d’exploitation monotâche ? Justifiez votre réponse.
2- Qu’est ce qu’une section critique ? Quelles conditions faut il vérifier afin d’assurer une
bonne coopération entre les processus concernés par cette section critique?
Exercice 1
Soit l'algorithme suivant pour la gestion de la synchronisation des processus:
1. Quelle est la propriété qui n'est pas satisfaite par cet algorithme?
Exercice 2
1- Rappeler l’algorithme de Peterson pour synchroniser deux processus concurrents
2- On se propose de synchroniser le passage des piétons sur un pont qui ne supporte qu’une
seule personne allant d’un coté à un autre. On vous demande d’écrire le programme du
piéton nommé passer(...) qui va lui permettre de passer d’un côté à un autre à travers le pont.
Vous devez utiliser les deux fonctions entrer_SC et liberer_SC implémentées dans la
première question afin de synchroniser les piétons.
Exercice 3
Soit l'algorithme suivant:
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
int main() {
int compt=0 ;
pid_t pid_fils1, pid_fils2 ;
printf("1-Compteur= %d \n",compt) ;
pid_fils1 = fork() ;
if (pid_fils1 == -1) {
printf("Erreur") ;
return(1) ;
}
if (pid_fils1 == 0) {
compt++ ;
printf("2-Compteur %d\n",compt) ;
pid_fils2 = fork() ;
if (pid_fils2 == -1) {
printf(" Erreur ") ;
return(1) ;
}
if (pid_fils2 == 0) {
compt++ ;
printf("3-Compteur %d\n",compt) ;
}
}else {
compt-- ;
printf("4-Compteur %d\n",compt) ;
}
}
Bon Travail