Académique Documents
Professionnel Documents
Culture Documents
1.1 [3 pts] Donnez l’arborescence des processus créés par le code suivant
(supposez que les appels système ne retournent pas d’erreur). Donnez
également tous les affichages possibles.
int main() {
if (fork() == 0) {
if (fork() == 0) { write(1,"3",1);}
else { wait(NULL); write(1,"4",1); }
exit(0);
} else {
if (fork() == 0) { write(1,"1",1); exit(0); }
}
while(wait(NULL)>0);
write(1,"2",1);
return 0;
}
1.2 [2 pts] Une application temps réel est composée de 3 tâches périodiques
indépendantes : T1(c1,p1), T2(c2,p2) et T3(c3,p3), où ci et pi sont
respectivement le pire temps d’exécution et la période de la tâche Ti, pour i de
1 à 3. Supposez que c2 = 2c1, c3 = 4c1, p2=2p1 et p3=2p1.
Donnez en fonction de c1, les plus petites valeurs de p1, p2 et p3 pour que
les tâches soient ordonnançables ?
Page 1 sur 7
INF2610 Examen final Automne 2017
Question 2 (6 pts) : Moniteurs et interblocage
2.2 [3 pts] Supposez maintenant que le nombre de threads créés par le processus
est M, N>2 et que la fonction F est récursive avec une profondeur maximale de
récursivité égale à 2 (c-à-d le premier appel à F peut faire appel à F qui, à son
tour, peut faire appel à F). Chaque appel à F est encadré par les appels aux
fonctions getA et endA.
Page 2 sur 7
INF2610 Examen final Automne 2017
Est-ce que les threads peuvent se retrouver interbloqués ?
Si vous répondez oui, donnez :
- un scénario complet qui mène vers un interblocage ainsi que
- la valeur minimale de N, en fonction de M, pour que les threads ne se
retrouvent jamais interbloqués.
Si vous répondez non, prouvez qu’il n’est pas possible d’atteindre une
situation d’interblocage.
3.4. [3 pts] Supposez que les tables des pages d’un processus sont en mémoire
physique durant l’exécution du processus.
Donnez pour chacune des configurations suivantes, la taille totale (en nombre
de pages) des tables des pages à maintenir en mémoire durant l’exécution
d’un processus de 4MiO d’espace d’adressage virtuel contigu :
a) La table des pages du premier niveau a 1024 entrées.
b) La table des pages du premier niveau a 2048 entrées.
c) La table des pages du premier niveau a 512 entrées.
C’est pour quelle configuration a, b ou c, obtenez-vous la taille minimale ?
Page 3 sur 7
INF2610 Examen final Automne 2017
Question 4 (3 pts) : Ordonnancement de processus
Page 4 sur 7
INF2610 Examen final Automne 2017
Le corrigé
Question 1 (5 pts) : Généralités
2.2. [3 pts]
Oui, pour M=2, N=3 et le scénario suivant : T1 appelle à F qui appelle à son
tour F; T2 appelle à F ; T1 bloque suite à un autre appel récursif à F ; T2
bloque suite à un appel récursif à F ;
La valeur minimale de N est M * 2 + 1 car dans le pire cas chaque thread a
besoin de 3 appels en cascade à F. Si chaque thread a déjà effectué 2 appels
en cascade à F, il suffit de permettre un autre appel à F, afin que l’un des
threads puisse terminer ses appels en cascade et permettre ensuite à
d’autres de terminer les leurs.
Page 5 sur 7
INF2610 Examen final Automne 2017
3.1. [1 pt] 1 page = 4KiO = 212 octets ! Sur les 32 bits, 12 bits sont réservés
au déplacement dans la page. Il reste donc 20 bits pour le numéro de page
! 220 pages = 1Mi pages.
3.2. [1 pt] 4MiO / 4KiO pages = 1Ki pages = 1024 pages.
3.3. [1 pt] Le numéro de page de 0x00110A10 est donnée par 0x00110 c-à-d
28 + 24 = 256 + 16 = 272. La page 272. Les 12 bits restants (A10) donnent
le déplacement dans la page.
Page 6 sur 7
INF2610 Examen final Automne 2017
Page 7 sur 7