Université Larbi Ben M’hidi, Oum El Bouaghi Année universitaire : 2024 – 2025
Faculté : SESNV Semestre 6
Département : Mathématiques et Informatique Niveau : L3 ISIL
Corrigé de l’examen de rattrapage : Systèmes d’exploitation 2
Exercice 01 (7 points)
Soit le programme parallèle suivant :
Begin 1- Construire le graphe de précédence correspondant à ce programme.
a=1
2- Ce système est-il déterminé ?
b=5
c=4 3- Ce système est-il en parallélisme maximal ?
ParBegin
𝑥 = 2𝑎 + 𝑏
𝑦 = 2𝑏 − 2𝑎
ParEnd
ParBegin
𝑧 = 4𝑥 − 3
𝑡 = 2𝑦 2
ParEnd
print(t)
End
1- Graphe de précédence :
2- Détermination du système : On applique la condition de Bernstein sur chaque paire de tâches
parallèles :
• 𝑇3 (𝑥 = 2𝑎 + 𝑏) avec 𝑇4 (𝑦 = 2𝑏 − 2𝑎) :
Université Larbi Ben M’hidi, Oum El Bouaghi Année universitaire : 2024 – 2025
Faculté : SESNV Semestre 6
Département : Mathématiques et Informatique Niveau : L3 ISIL
o 𝑅3 = {𝑎, 𝑏}, 𝑊3 = {𝑥}
o 𝑅4 = {𝑏, 𝑎}, 𝑊4 = {𝑦}
o 𝑅3 ∩ 𝑊4 = 𝑊3 ∩ 𝑅4 = 𝑊3 ∩ 𝑊4 = ∅
• 𝑇5 (𝑧 = 4𝑥 − 3) avec 𝑇6(𝑡 = 2𝑦 2 ) :
o 𝑅5 = {𝑥}, 𝑊5 = {𝑧}
o 𝑅6 = {𝑦}, 𝑊6 = {𝑡}
o 𝑅5 ∩ 𝑊6 = 𝑊5 ∩ 𝑅6 = 𝑊5 ∩ 𝑊6 = ∅
Le système est déterminé.
3- Parallélisme maximal : On a 𝑅5 ∩ 𝑊6 = 𝑊5 ∩ 𝑅6 = 𝑊5 ∩ 𝑊6 = ∅. Donc la relation de précédence
𝑇5 < 𝑇6 n’est pas utile. Le système n’est alors pas en parallélisme maximale.
Exercice 02 (7 points)
• 0 signifie que le verrou est occupé, 1 indique qu’il est libre.
• En appliquant la condition de Bernstein sur chaque paire des tâches des deux processus, on déduit
que la ressource critique est la variable x.
• Cette variable et partagée entre P1 et P2 dans les tâches : 𝑇12 , 𝑇23 et 𝑇25
• La solution est comme suit :
P1 P2
𝑟𝑒𝑎𝑑(𝑎) 𝑟𝑒𝑎𝑑(𝑏)
𝑤ℎ𝑖𝑙𝑒(𝑣𝑒𝑟𝑟𝑜𝑢 == 0) ; 𝑏 = 2𝑏 2 − 5
𝑣𝑒𝑟𝑟𝑜𝑢 = 0 𝑤ℎ𝑖𝑙𝑒(𝑣𝑒𝑟𝑟𝑜𝑢 == 0) ;
𝑟𝑒𝑎𝑑(𝑥) 𝑣𝑒𝑟𝑟𝑜𝑢 = 0
𝑣𝑒𝑟𝑟𝑜𝑢 = 1 𝑦 = 2𝑥 + 𝑏
𝑎 = 𝑎2 𝑣𝑒𝑟𝑟𝑜𝑢 = 1
𝑐 =7−𝑎 𝑏=0
𝑝𝑟𝑖𝑛𝑡(𝑐) 𝑤ℎ𝑖𝑙𝑒(𝑣𝑒𝑟𝑟𝑜𝑢 == 0) ;
𝑣𝑒𝑟𝑟𝑜𝑢 = 0
𝑥 = 2𝑦
𝑣𝑒𝑟𝑟𝑜𝑢 = 1
Exercice 03 (6 points)
• Avant d’entrer dans le parking, la voiture doit attendre à travers l’instruction : wait(parking_places)
• La voiture ne peut signaler la libération de sa place qu’après sa sortie. Donc l’instruction
signal(parking_places) doit succéder l’instruction sortirDuParking().
Semaphore parking_places = 50
Process Voiture {
wait(parking_places)
entrerDansParking()
// ... la voiture est dans le parking
sortirDuParking()
signal(parking_places)
}