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)
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)
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 quela 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)
6. On considère la table de pages d’un processusP dont les 4 premières entrées sont données ci-dessous :
Node page Node 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. . .
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");
} }
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)
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)
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)
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)