Vous êtes sur la page 1sur 9

Info32B – Systèmes d’Exploitations – année 2015-2016

Partiel – 23 octobre 2017


N. Sabouret, F. Faissole, R. Pelle, T. Lavergne

Nom : Prénom : Signature :

— L’épreuve dure 1h30. Tous les documents sont autorisés.


— Le sujet comprend 4 exercices indépendants.
— Toutes vos réponses doivent être justifiées.

Exercice 1 – Question de cours (4 points)


1. Quelle est la différence entre une interruption et une exception ? (1 point)

2. Donnez 3 exemples d’appel système vus en cours. (1 point)

3. Qu’est-ce qu’un déroutement ? (1 point)

4. Qu’est-ce qu’un Process Control Block ? (1 point)

1
Exercice 2 – Mémoire (6 points)
On considère un système pouvant gérer jusqu’à 2048 processus pouvant adresser chacun 16
Gio de mémoire. Le système dispose de 8 Gio de mémoire physique.
1. Sur combien de bits sont codées l’adresse logique et l’adresse physique ? Justifiez votre
réponse (1 point)

2. Quelle est la quantité maximale de mémoire virtuelle pour le système ? (0,5 point)

3. On suppose que l’allocation de mémoire est contiguë avec une stratégie Best Fit.
On considère l’éxécution des processus suivante :
Processus P1 P2 P3 P4
Arrivée 0 2 1 4
Mémoire 6,5 Gio 0,5 Gio 2 Gio 4,5 Gio
Durée 3 6 12 6
Décrivez précisément l’allocation mémoire à chaque pas de temps, en expliquant au fur
et à mesure comment sont positionnés les processus. (1 point)

2
4. Donner le taux de fragmentation à t = 3 secondes pour l’exécution donnée à la question
précédente. (0,5 point)

5. On suppose maintenant que la mémoire est paginée (à un niveau de pagination), avec


des cadres de pages de 128 Kio. Sur combien de bits sont codés le décalage, le numéro
de page et le numéro de cadre ? Justifiez votre réponse. (1 point)

3
6. On considère la table de pages d’un processus P dont les 4 premières entrées sont données
ci-dessous :
No de page No de cadre Bit de validité
0 0010 1
1 A1A3 0
2 FFFF 1
3 3000 1
Calculez l’adresse physique correspondant à l’adresse logique 00004B6A4. Vous devez
expliquer les détails de votre calcul. Attention ! Prenez garde au nombre de bits
de décalage et de numéro de page ! (1 point)

7. On s’intéresse à l’adresse physique 1 4346 0101. Est-ce que cette adresse appartient au
processus P ? Si oui, quelle est son adresse logique. Si non, expliquez. (1 point)

Tournez la page. . .

4
Exercice 3 – Threads (5 points)
Partie 1 : Cycle de vie des threads
On propose le code Java suivant :

public class exercice extends Thread {

public String name;


public exercice(String s){
this.name = s;
}

public void run(){


for(int i = 0 ; i < 8 ; i++){
System.out.println("bonjour de la part de " + name);
try {
Thread.sleep(1000);
if (name != "fifi" && i == 5){
break;
}
} catch (InterruptedException e) {
break;
}
}
System.out.println("aurevoir de " + name);
}

public static void main ( String[] args){

System.out.println("début");
exercice[] threads = {
new exercice("riri"),
new exercice("fifi"),
new exercice("loulou")
};
for(exercice ex : threads)
ex.start();
try {Thread.sleep(2500);}
catch (Exception e){ e.printStackTrace();}
threads[2].interrupt();
try {
threads[1].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("adieu");
}
}

5
1. Écrivez le contenu de la sortie standard quand on exécute ce programme Java. (2 points)

Partie 2 : synchronisation
Nous considérons maintenant le code Java suivant :

boolean[] section_critique = {false,false};

void entrer_sc(int id) {


section_critique[id] = true;
while(section_critique[1-id])
;
}

void sortir_sc(int id){


section_critique[id] = false;
}

1. Expliquez pourquoi ce code ne protège pas des interblocage. (1 point)

6
2. Réécrivez les deux fonctions pour empêcher l’interblocage (1 point)

3. Proposez une méthode permettant de réduire l’attente active des processus (0,5 point)

7
4. Peut-on généraliser cette méthode pour N processus, N>2 (0,5 point)

Exercice 4 – Ordonnancement (5 points)


On considère un système utilisant un ordonnancement par priorités dynamiques allant de 0
(la plus basse) à 4 (la plus haute). À chaque fois qu’un processus se voit attribué le processeur,
sa priorité baisse de 1 sans jamais descendre en dessous de 0.
L’algorithme d’ordonnancement choisit le processus dont la priorité est la plus élevée et
pour un niveau de priorité il utilise l’algorithme Round-Robin avec un quantum de 2.
Les processus peuvent faire des demandes d’E/S qui suspendent le processus pendant 5
unités de temps. Lorsqu’un processus repasse dans la file "Prêt" après une demande d’E/S, sa
priorité est réinitialisée à sa valeur initiale mais il ne peut pas préempter le processus actuelle-
ment en cours d’exécution.
On considère les processus suivants pour lesquels on indique la date d’arrivée, la durée
estimée, la priorité et les temps où ils vont réaliser une demande d’E/S :

Proc. Arrivée Durée Priorité E/S


P1 0 10 4 3, 5, 9
P2 0 6 2
P3 1 5 3
P4 4 2 4 1
P5 8 5 2
P6 11 6 3
1. Dessinez le diagramme de Gantt représentant l’ordonnancement de ces processus dans
le cas de l’algorithme plus court-d’abord en ignorant les priorités et les demandes d’E/S.
Vous indiquerez aussi le temps d’attente moyen. (1,5 points)

8
2. Toujours en ignorant les priorités et demandes d’E/S, dessinez le diagramme de Gantt
dans le cas de l’algorithme Round-Robin. Vous indiquerez aussi le temps d’attente moyen.
(1,5 points)

3. Dessinez le diagramme de Gantt représentant l’ordonnancement des processus dans le


cas du système complet avec priorité et demandes d’E/S. Vous indiquerez aussi le temps
d’attente moyen. (2 points)

Vous aimerez peut-être aussi