• Aucun résultat trouvé

Exercice 3 – Threads (5 points)

N/A
N/A
Protected

Academic year: 2022

Partager "Exercice 3 – Threads (5 points)"

Copied!
6
0
0

Texte intégral

(1)

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)

Correction :Une exception est une interruption logicielle, c’est-à-dire qu’un processus demande à l’OS d’intervenir.

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

Correction : wait, notify, fork, exec, open, read/write, malloc, . . . 3. Qu’est-ce qu’un déroutement ? (1 point)

Correction : Lorsqu’un défaut de page se produit, l’OS doit demander la page au péri- phérique de stockage externe puis la charger en mémoire. Pendant ce temps, le processus en exécution est mis en attente. C’est un déroutement.

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

Correction : C’est la structure de données qui permet à l’OS de stocker l’ensemble des informations utiles sur un processus (propriétaire, adresse du processus en mémoire, priorité, usage, état dans le cycle de vie, etc).

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)

Correction :Adresse physique sur 33 bits (car 8 Gio) et adresse logique sur 34 bits (16 Gio).

2. Quelle est la quantité maximale de mémoire virtuelle pour le système ? (0,5 point) Correction : 2048×16Gio= 245o= 32T io

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 :

(2)

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)

Correction :

— Au temps 0, P1 rentre.

— Au temps 1, P3 ne peut pas rentrer (car il ne reste que 1,5 Gio de libre).

— Au temps 2, P2 peut rentrer et il reste 1 Gio de libre.

— Au temps 3, P1 termine et P3 peut rentrer, laissant deux blocs libres (l’un de 4,5 Gio, l’autre de 1 Gio).

— Au temps 4, P4 peut rentrer en utilisant le bloc libre de 4,5 Gio.

— Au temps 8, P2 termine ;

— Au temps 10, P4 termine ;

— Au temps 15, P3 termine.

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

Correction :On a 2,5 Gio utilisés sur 8 Gio prévus (donc 5,5 de libre). Mais il ne faut pas compter le dernier Gio d’espace libre qui n’est pas de la "fragmentation" (un disque libre n’est pas 100 % fragmenté !). Le taux de fragmentation est de 4,5 / 8 ' 56 %.

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)

Correction : Les cadres de pages font 128 Kio = 217 o. Donc le décalage est codé sur 17 bits. Le numéro de page est codé sur (34 - 17) bits soit 17 bits. Le numéro de cadre est codé sur (33 - 17) bits soit 16 bits.

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)

Correction :Adresse logique 0 0004 B6A4 correspond à décalage = 0B6A4 (17 bits) et page = 2. La page est valide, donc on peut calculer l’adresse physique FFFF (16 bits) concaténé avec 0B6A4 (17 bits) ce qui donne 1 FFFE B6A4.

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)

Correction : L’adresse physique s’écrit en binaire 1 0100 0011 0100 0110 0000 0001 0000 0001 ce qui correspond à A1A3 pour le cadre, 00101 pour le décalage. Le cadre est bien présent dans la table mais il n’appartient pas au processus.

(3)

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");

} }

(4)

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

Correction : La sortie est la suivante.

début

bonjour de la part de fifi bonjour de la part de riri bonjour de la part de loulou bonjour de la part de fifi bonjour de la part de riri bonjour de la part de loulou bonjour de la part de fifi bonjour de la part de riri bonjour de la part de loulou aurevoir de loulou

bonjour de la part de fifi bonjour de la part de riri bonjour de la part de riri bonjour de la part de fifi bonjour de la part de riri bonjour de la part de fifi aurevoir de riri

bonjour de la part de fifi bonjour de la part de fifi aurevoir de fifi

adieu

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)

Correction :Rien n’empêche deux processus de se marquer tous les deux en SC et donc de rentrer dans une boucle d’attente infinie. C’est l’exemple qui a été vu en cours. P0 appelle SC et effectue sc[0]=true, puis est interrompu, P1 fait de même, donc attend P0, qui reprend la main et attend P1, etc.

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

(5)

Correction :On implémente un système de tour pour gérer le cas où les deux processus veulent entrer en section critique en même temps. C’est encore une question de cours...

class Mutex1 implements Mutex { boolean [] est SC = {false,false};

int tour = 0;

void commencerSectionCritique(int id) { tour=1-id;

est SC[id]=true;

while (est SC[1-id] && tour==1-id)

; }

void finirSectionCritique(int id) { est SC[id]=false;

} }

3. Proposez une méthode permettant de réduire l’attente active des processus (0,5 point) Correction : Il est possible d’utiliser les fonctions wait() et notify() pour réduire l’at- tente active des processus.

4. Peut-on généraliser cette méthode pour N processus, N>2 (0,5 point) Correction : Oui, c’est l’algorithme de Dekker vu en cours.

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.

(6)

Vous indiquerez aussi le temps d’attente moyen. (1,5 points) Correction :

17 0

18 1

19 2

20 3

21 4

22 5

23 6

24 7

25 8

26 9

27 10

28 11

29 12

30 13

31 14

32 15

33 16

34 17

2 4 3 5

5 6 1

Attention, aux temps 1 et 4 des processus arrivent mais ne préemptent pas P2 car leur durée sont égales à la durée restante de P2 qui est donc prioritaire car déjà en cours d’exécution. À T=8, P3 et P5 sont à égalité mais P3 est arrivé en premier et donc à la priorité.

Temps moyen : (24 + 0 + 7 + 2 + 5 + 7)/6 = 45/6 = 7.5

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) Correction :

17 0

18 1

19 2

20 3

21 4

22 5

23 6

24 7

25 8

26 9

27 10

28 11

29 12

30 13

31 14

32 15

33 16

34 17

1 2 3 1 4 2 3 5 1

1 6 2 3 5 1 6 5 1 6

Temps moyen : (22 + 16 + 17 + 4 + 17 + 17)/6 = 93/6 = 15.5

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)

Correction :

17 0

18 1

19 2

20 3

21 4

22 5

23 6

24 7

25 8

26 9

27 10

28 11

29 12

30 13

31 14

32 15

33 16

34 17

1 3 4 1 2 3 4 1 6 5

6 1 1 2 3 5 1 6 2 5

Temps moyen : (4 + 27 + 20 + 0 + 21 + 14)/6 = 86/6 = 14.33

Références

Documents relatifs

Biot, qui pourra être le point de départ de discussions fructueuses. Tous les camarades intéressés par l'ar- chitecture savent donc qu'ils trouveront une salle où

On suppose que les bandes sont constituées d'un seul octet par disque, que la première bande utilise le quatrième disque pour stocker la parité des trois premiers octets, la

Par contre, on n'a pas besoin de 2 6 pages puisque chaque processus peut adresser au plus 4Ko, il sut de 16 pages de 256o, et donc le numéro de page tient sur 4 bits..

Par exemple, si on a des tables de pages de 4Ko, si toutes les pages utilisées par le processus sont dans le même groupe de pages, alors on ne chargera qu'une table de pages, au lieu

Déterminer les ensembles de définition des fonctions

Annales de l’Institut Henri Poincaré - Section B.. PROCESSUS DE POINTS MARQUÉS ET PROCESSUS RAMIFIÉS 265. A étant un borélien. La mesure sur R s’exprime par

Le système de gestion de base de données relationnelles Logiciels SGBDR L'algèbre relationnelle et le langage SQL : l'élaboration de requêtes Logiciels SQL. La sécurité

– Cette méthode vérifie si le thread doit être mis en attente – Si oui, modification de la table, recherche d’un autre thread,. chargement du PC