: 2017/2018
EXAMEN
Systèmes d’exploitation &Programmation Concurrente
1/4
2) En donnez les matrices d’allocation et de demandes des ressources. (0,5 pt)
3) Est-ce que ce système est dans un état sécurisant ? si oui donnez les séquences d’exécution
possibles des processus sinon en donnez les processus en deadlock? En précisant quel
algorithme vous avez appliqué ? (1 pt)
b) Les threads thread_p1, thread_p2, et thread_p3 d’un même processus s'exécutent en parallèle.
Dites si ce processus cause nécessairement un interblocage, ne peut causer un interblocage ou
peut parfois causer un interblocage ?. Donnez, le cas échéant, un ordonnancement des actions
qui mène à un interblocage et un qui parvient à compléter sans interblocage. Un
ordonnancement est représenté par la séquence des énoncés (chacun identifié par un tid_lettre)
exécutés. (1,5 pts)
2/4
Exercice 3: Synchronisation par pipe (4 points)
On souhaite disposer d’un processus qui crée un fils et un petit fils et qui se synchronisent
par différents pipes selon le schéma comme suit :
Le père T1 communique des entiers aléatoires à son fils T2 via B1 et puis le fils les multiplient par
soi-même et ensuite les communique au fils T3 via B2. Enfin T3 effectue le même traitement que
T2 et communiquent ses résultats au grand père T1.
Ecrire le programme C correspondant en bien spécifiant/commentant chaque déclaration/création
et utilisation de pipe spécifique au schéma donné en Figure 1.
3/4
a) Indiquez sur un schéma le contenu de chacune des 12 cases de la mémoire physique (c-à-d
les pages qu'elles contiennent). Quelles cases sont partagées? Quelle peut être leur utilité?
Comment interprétez-vous leurs bits d'état ? Quelles cases sont libres ? (1,5 pts)
2) Traduire les adresses virtuelles suivantes en adresses physique (indiquées en hexadécimal).
On souhaite appliquer cet algorithme de remplacement dans un cache capable de contenir 5 pages,
et on suppose que le gestionnaire de mémoire accède successivement aux pages suivantes :
7, 1, 8, 2, 3, 1, 6, 1, 2, 7, 3, 5, 6
Initialement, le cache est vide.
1) Déroulez l'algorithme de remplacement FIFO sur cette séquence de pages. En déduire le
nombre de défauts de pages.
2) Déroulez l'algorithme de remplacement horloge sur cette séquence de pages et indiquez la
valeur de bit de référence. En déduire le nombre de défauts de pages et puis le comparer avec
FIFO?.
3) Quel est le nombre de défauts de page minimal sur cet exemple ainsi que le nombre d’entrées
sorties? Justifiez sans dérouler l’algorithme optimal.
Bon travail
4/4
Proposition de Correction
exam SE&PC 3/01/2017
jusqu’à une faible priorité si le temps CPU est long avec différents
morcellements. (0,75pt)
2) A quoi sert le bit de présence dans une table des pages ? et dire qui s’en sert ?
générer l’@ physique et puis la transférer sur le bus d’@ sinon DP. (1 pt)
3) Pourquoi a-t-on intérêt à diminuer le nombre de défauts de pages ?.
Les défauts de page engendrent des entrées/sorties qui sont plus coûteuses
moins aux swaps in et éviter les swaps out au maximum possible. (1 pt)
4) L’adresse logique peut-elle avoir une taille inférieure à l’adresse physique ? justifiez votre
réponse.
Jamais ! C’est plutôt supérieure ou égale car chaque processus en exécution
5/4
2taille_adresse_mémoire= 264 (0,5pt)
b) Le nombre de cases mémoire.
Taille_mémoire/taille_page = 4 Go/8Ko= 232/213=219 (0,5pt)
c) Le nombre total de pages de la mémoire virtuelle pouvant être allouées sur le système.
Taille_swap/taille_page = 6 Go/8 Ko= 3* 218 (0,5pt)
Allocation Demande
R1 R2 R3 R1 R2 R3
P0 1 0 0 0 0 0 Disponible <0, 0, 0>
P1 0 2 0 0 2 2 Existant <2, 7, 6>
P2 0 3 3 0 0 0
P3 1 2 1 0 1 0
P4 0 0 2 0 0 1
b) Est-ce que ce système est dans un état sécurisant ? si oui donnez les séquences d’exécution
possibles des processus sinon en donnez les processus en deadlock? En précisant quel
algorithme vous avez appliqué ? (1 pt --0,5 pt+0,5 pt)
6/4
Ce n’est pas un état en deadlock. Il existe plusieurs séquences qui mènent à
l’état sain. e.g.
p0, p2, p1, p3, p4
p2, p0, p3, p1, p4
p2, p1, p4, p3, p0
p2, p4, p1, p3, p0
2) Les threads thread_p1, thread_p2, et thread_p3 d’un même processus s'exécutent en parallèle.
Dites si ce processus cause nécessairement un interblocage, ne peut causer un interblocage
ou peut parfois causer un interblocage ?. Donnez, le cas échéant, un ordonnancement des
actions qui mène à un interblocage et un qui parvient à compléter sans interblocage. Un
ordonnancement est représenté par la séquence des énoncés (chacun identifié par un
tid_lettre) exécutés. (1,5 pts)
l’exemple trivial thread_p1 ; thread_p2 ; thread_ p3, soit tid1.A … tid1.H ; tid2.A
7/4
Exercice 3: Synchronisation par pipe (4 points)
On souhaite disposer d’un processus qui crée un fils et un petit fils et qui se synchronisent
par différents pipes selon le schéma comme suit :
Le père T1 communique des entiers aléatoires à son fils T2 via B1 et puis le fils les multiplient par
soi-même et ensuite les communique au fils T3 via B2. Enfin T3 effectue le même traitement que
T2 et communiquent ses résultats au grand père T1.
Ecrire le programme C correspondant en bien spécifiant/commentant chaque déclaration/création
et utilisation de pipe spécifique au schéma donné en Figure 1. (15*0,25pt +2*0,125)
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#define MAX 5
int main(void)
{ //Descripteurs de pipes (0,25pt)
8/4
while ((nb_lu = read(d_lecture, nb_R, sizeof(nb_R)>0)
(0,25pt)
{
write(1, nbR, sizeof(nb_R)); (0,25pt)
}
wait(NULL); }
9/4
N : page invalide et non allouée ;
S : page invalide en zone de swap (sur le disque), dans ce cas le numéro de case indique le
numéro du bloc (sur le disque) contenant la page (en réalité ce numéro de bloc figure dans
une autre table).
Toutes les pages au-delà de la 9 ont un bit N.
1) Indiquez sur un schéma le contenu de chacune des 12 cases de la mémoire physique (c-à-d les
pages qu'elles contiennent). Quelles cases sont partagées? Quelle peut être leur utilité? Comment
interprétez-vous leurs bits d'état ? Quelles cases sont libres ? (1,5 pts)
Case 0 1 2 3 4 5 6 7 8 9 10 11
Ppage P26 P17 P10/P20 P11/P21 P12/P22 -- P14 P15 P24 P25 P27 P28
Les pages 2, 3, 4 sont partagées par les deux processus P1 et P2 ; comme l’état
indique R c’est-à-dire que c’est la partie code qui est partagée en lecture seule.
héxadécimals
10/4
Si R= 1 alors R est remis à 0 et cette page est déplacée en fin de la liste (elle devient jeune
comme si elle venait d’être chargée), et la recherche continue jusqu’à trouver une page
ayant le bit R à 0, qui sera retirée.
On souhaite appliquer cet algorithme de remplacement dans un cache capable de contenir 5 pages,
et on suppose que le gestionnaire de mémoire accède successivement aux pages suivantes :
7, 1, 8, 2, 3, 1, 6, 1, 2, 7, 3, 5, 6
Initialement, le cache est vide.
1) Déroulez l'algorithme de remplacement FIFO sur cette séquence de pages. En déduire le
1 2 3 4 5 6 7 8 9 10 11 12 13
7 1 8 2 3 1 6 1 2 7 3 5 6
C1 7 1 6 7
C2 1 2 7 10
C3 8 3 5 12
C4 2 4
C5 3 5
DP * * * * * * * *
8 DP
2) Déroulez l'algorithme de remplacement horloge sur cette séquence de pages et indiquez la
valeur de bit de référence. En déduire le nombre de défauts de pages et puis le comparer avec
FIFO?. (1,5 pt)
1 2 3 4 5 6 7 8 9 10 11 12 13
7 1 8 2 3 1 6 1 2 7 3 5 6
C1 7 1 1 61 1
0 0
C2 1 1 1 5 1
0 0
C3 8 1 7 1
0 0
C4 2 1
0 1 0
C5 3 1
0 1 0
DP * * * * * * * *
11/4
3) Quel est le nombre de défauts de page minimal sur cet exemple ainsi que le nombre d’entrées
sorties? Justifiez sans dérouler l’algorithme optimal.
Total de défaut de pages (optimal): 7 qui n’est autre que le nombre de pages référencées
12/4