• Aucun résultat trouvé

Exercice 2 – Gestion de la mémoire (6 points)

N/A
N/A
Protected

Academic year: 2022

Partager "Exercice 2 – Gestion de la mémoire (6 points)"

Copied!
6
0
0

Texte intégral

(1)

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

Examen – 14 décembre 2015

N. Sabouret, R. Bonaque, M. Gleize

Nom : Prénom : Signature :

— L’épreuve dure 2h30. 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 (3 points)

1. Dans un système de fichier, quelle est la différence entre une allocation de type FAT et une allocation indexée ? (1 point)

Correction : Dans un OS avec une allocation de type FAT, le FCB contient un poin- teur vers le premier élément d’une liste chaînée dans la table FAT. Dans une allocation indexée, le FCB contient l’adresse d’un bloc d’index.

2. Combien de RPC sont nécessaires pour lire le contenu d’un fichier non-encore ouvert sur un serveur NFS ? (1 point)

Correction : Pour l’ouverture (côté client uniquement), il faut récupérer le FD ce qui nécessite autant de RPC que de point de montage dans le chemin. Ensuite, il faut encore une RPC pour la lecture du fichier lui-même.

3. Qu’est-ce qui permet, dans un OS, de mettre en œuvre la multiprogrammation et le temps partagé ? (1 point)

Correction :Pour la multiprogrammation, le cycle de vie du processus prévoit un état E/A pour les processus en attente d’une E/S sur un périphérique (en complément de la file d’attente pour les processus prêts) ; pour le temps partagé, c’est l’utilisation d’un ordonnanceur.

Exercice 2 – Gestion de la mémoire (6 points)

On se place dans un système de mémoire de 1Go de mémoire géré de manière paginée et segmentée avec des cadres de page de 4Ko. Chaque processus peut utiliser jusqu’à 1024 segments. Chaque segment peut occuper 4Mo de mémoire. Le système d’exploitation autorise jusqu’à 1024 processus.

1. Quelle est la taille (en bits) de l’adresse logique ? (0,5 point)

Correction : Un processus peut occuper 210 segments × 222 octets de mémoire, donc l’adresse logique est sur 32 bits.

2. Quelle est la taille (en bits) de l’adresse physique ? (0.5 point) Correction : 1Go= 230o donc l’adresse physique est sur 30 bits.

(2)

3. Combien y a-t-il de cadres de page dans la RAM ? (0.5 point) Correction : 4Ko= 212. Il y a donc 2(30−12)= 218 cadres de pages.

4. On suppose que l’OS utilise un mécanisme de mémoire virtuelle équitable : chaque pro- cessus dispose de la même proportion de mémoire physique. Complétez le tableau suivant en indiquant la probabilité de faire un défaut de page pour un processus, en fonction du nombre total de processus prêts, en exécution ou en attente dans le système et de la taille dudit processus. On suppose que toutes les pages du processus sont équiprobables.

(2 points) Correction :

Taille du processus 512 Ko 16 Mo 1 Go 32 processus présents 0 0 0,96875 512 processus présents 0 0,875 0,998 1024 processus présents 0 0,9375 0,999

Principe : si j’ai N processus, chaque processus dispose de M = 230/N de mémoire physique. Si le processus est plus petit, il n’y a pas de défaut de page. S’il est plus gros (et de taille T), j’ai une probabilité deM/T de ne pas faire un défaut (donc une probabilité 1−M/T de défaut).

5. Pour réduire le nombre de défauts de page, on décide de passer à une politique d’alloca- tion proportionnelle. On se place dans le cas 512 processus avec un nouveau processus de 16Mo. On suppose que les 511 processus précédents ont une moyenne de 2Mo. Écrivez ci-dessous la probabilité d’obtenir un défaut de page ainsi que les détails de vos calculs.

(1 point)

Correction : Attention : il y a un piège : le fait de rajouter un processus réduit la pro- portion de page des autres processus. Tous les processus reçoivent la même proportion de l’espace total et donc auront la même probabilité de défaut. Il n’est pas nécessaire de calculer combien reçoit le nouveau processus : il suffit de calculer la proportion d’espace manquant. Nous avons en tout (512−1)∗2M o+ 16M o de mémoire virtuelle utilisée, soit 1Go+ 14M o. La probabilité d’erreur est donc de 14/(1024 + 14) = 0,013.

6. On suppose toujours que nous avons 1 processus de 16Mo et 511 processus de 2Mo.

Si l’accès disque est 1000 fois plus lent que l’accès mémoire, que nous fixons à 1 unité de temps, donnez le temps moyen de traitement de 1000 accès mémoire par processus (512000 accès en tout) dans les deux cas suivants :

— Politique équitable ;

— Politique proportionnelle.

Qu’en concluez-vous ? (1,5 points)

Correction : Attention : : il faut compter pour tous les processus, pas seulement notre nouveau processus.

— Politique équitable : les 511 petits processus ne feront pas de défaut de page. Notre processus fera environ 875 défauts. Total : 511×1000 + 875 + 125×1000 = 636875

— Politique proportionnelle : les 512 processus feront 13 défauts de page environ. Total : 512×(13∗1000 + 987) = 7161344

Conclusion : la méthode équitable est bien meilleure sur cet exemple !

Exercice 3 – Ordonnancement sur disque (5 points)

On considère un disque SSD de 8 Mo répartis en blocs de 512 Ko numérotés de 0 à F (en hexadécimal). La table suivante donne les numéros de blocs physiques, les blocs logiques qu’ils

(3)

contiennent (ou L lorsque le bloc est libre), la date de dernière écriture (exprimée en unités de temps depuis le début de la vie du disque) et l’usure (en nombre d’utilisation depuis le début d’utilisation du disque) : actuellement, il y a 10 blocs logiques (0 à 9) qui sont stockés sur ce disque.

phys. : 0 1 2 3 4 5 6 7 8 9 A B C D E F

log. : 1 4 2 6 0 L 9 3 L L 5 7 8 L L L

date : 53 41 106 99 72 87 55 31 80 58 64 67 91 61 0 0

usure : 2 8 7 3 6 5 8 6 7 9 6 8 8 3 0 0

Nous sommes à l’unité de temps 100 et on suppose que l’UC fait, dans l’ordre, des requêtes d’écriture sur les pages situées sur les blocs logiques suivants (1 requête par unité de temps) :

A 1 7 1 2 B A

1. Donnez, à l’aide d’une table similaire à celle fournie dans l’énoncé, le résultats de l’exé- cution en utilisant une politique de Wear Levelling dynamique. Expliquez clairement ce qu’il se passe à chaque pas de temps de l’éxécution. En cas de doute, toutes choses étant égales par ailleurs, vous choisirez le premier bloc dans l’ordre numérique. (2 points)

Correction :

100 (A) Nouveau paquetprendre le bloc libre le moins usé : c’est E

101 (1) Remplacer 1prendre le bloc libre le moins usé : c’est F ; marquer 0 libre

102 (7) Remplacer 7prendre le bloc libre le moins usé : c’est 0 maintenant qu’il a été libéré ; marquer B libre

103 (1) Remplacer 1prendre le bloc libre le moins usé : c’est D ; marquer F libre à nouveau 104 (2) Remplacer 2prendre le bloc libre le moins usé : c’est F ; marquer 2 libre

105 (B) Nouveau paquetprendre le bloc libre le moins usé : c’est 5

106 (A) Remplacer Aprendre le bloc libre le moins usé : c’est 2 ; marquer E libre

phys. : 0 1 2 3 4 5 6 7 8 9 A B C D E F

log. : 7 4 A 6 0 B 9 3 L L 5 L 8 1 L 2

date : 102 41 18 99 72 105 55 31 80 58 64 67 91 103 100 104

usure : 3 8 8 3 6 6 8 6 7 9 6 8 8 4 1 2

2. Donnez, à l’aide d’une table similaire à celle fournie dans l’énoncé, le résultats de l’exé- cution en utilisant une politique de Wear Levelling statiqueavec un délai d’ancienneté fixé à 10 unités de temps. Expliquez clairement ce qu’il se passe à chaque pas de temps de l’éxécution. En cas de doute, toutes choses étant égales par ailleurs, vous choisirez le premier bloc dans l’ordre numérique. (3 points)

Correction :

100 (A) On cherche le bloc logique le moins utilisé : c’est E. Il est libre : on l’utilise.

101 (1) On cherche le bloc logique le moins utilisé : c’est F. Il est libre : on l’utilise. On marque 0 libre.

102 (7) On cherche le bloc logique le moins utilisé : c’est E. Il n’est pas libre et il a été utilisé récement. Idem pour F. Le prochain moins utilisé est 0 qui est libre : on l’utilise et on marque B libre.

(4)

103 (1) On cherche le bloc logique le moins utilisé. On élimine E, F, 0 et 3 car ils sont non-libres et trop récents. On arrive à D qui est libre et on l’utilise. On marque F libre.

104 (2) On cherche le bloc logique le moins utilisé : c’est F et il est libre. On l’utilise et on marque 2 libre.

105 (B) On cherche le bloc logique le moins utilisé. On élimine E, F, 0, 3 et D qui sont non-libres et trop récents. On arrive à 5 qui est libre et on l’utilise.

106 (A) On cherche le bloc logique le moins utilisé. On élimine E, F, 0, 3, D et on arrive à 4 qu’on utilise et on marque E libre. Mais il faut alors déplacer le bloc 0.

106b (0) On cherche le bloc logique le moins utilisé : c’est E et il est libre. On l’utilise.

102b On cherche le bloc logique le moins utilisé. On élimine E, F et 0 qui sont non-libres et récents : on arrive à D qui est est libre et on l’utilise. On marque B libre.

phys. : 0 1 2 3 4 5 6 7 8 9 A B C D E F

log. : 7 4 L 6 A B 9 3 L L 5 L 8 1 0 2

date : 102 41 18 99 106 105 55 31 80 58 64 67 91 103 106 104

usure : 3 8 7 3 7 6 8 6 7 9 6 8 8 4 2 2

Exercice 4 – Système de Fichiers ext4 (6 points)

Nous allons considérer une version un peu simplifiée d’ext4, un système de fichier très répandu sous GNU/Linux. Dans ce système, le volume (par exemple une partition d’un disque dur) est découpé en blocs de 4 Ko. Comme vu dans le cours, et par analogie avec les disques durs, nous parlerons de secteurs pour désigner les emplacement de 4Ko sur le volume dans lequels sont placés les blocs de fichier.

L’allocation des blocs dans un système de fichier extfs4 se fait de manière indexée en utilisant ce qu’on appelle un extent. Un extent indique une suite de blocs de fichier qui sont stockés les un à la suite les un des autres sur le volume. Lesextent font 12 octets organisés de la manière suivante :

— sur les 4 premier octets : le numéro du premier bloc de fichier couvert par cet extent

— sur les 2 octets suivants : la taille, en nombre de blocs, de cet extent1

— sur les 6 derniers octets : le numéro du secteur sur le volume ou commence cet extent Exemple

Prenons un fichier de 15 Ko, et qui a donc 4 blocs de fichier (le dernier bloc ayant 1 Ko non utilisé) et supposons que ses trois premiers blocs sont placés dans les secteurs 1000, 1001 et 1002 du volume et que son quatrième bloc est sur le secteur 42 du volume. Il suffit de deux extents pour indiquer où se trouve la totalité du fichiers sur le volume :

— (0, 3, 1000) : les trois blocs de fichier à partir du bloc de fichier 0 sont stockés à partir du bloc de volume 1000.

— (3, 1, 42) : l’unique bloc de fichier 3 est stocké sur le bloc de volume 42.

Liste d’extents

Pour indexer plusieurs parties non-contiguës d’un même fichier, on utilise uneliste d’extents.

Celle-ci est composée d’un extent_header sur 12 octets, qui indique notamment le nombre d’extents dans la liste, puis des extents eux même.

1. Dans la vraie spécification de ext4 il y a une petite différence ici.

(5)

Questions

1. Quelle est la taille maximale d’un volume, en blocs et en octets ? (1 point)

Correction :Les numéros de bloc du volume sont sur 6 o = 48 bits, il y a donc au plus 248 blocs de 4 Ko soit 248+12 o = 260 o = 220 Go ou 210 To ou 1 Eo.

2. Quelle est la taille maximale d’un fichier, en blocs et en octets ? (1 point)

Correction :Les numéros de bloc du fichier sont sur 4 o = 32 bits, il y a donc au plus 232 blocs de 4 Ko soit 244 o = 16 To.

3. L’inode (c’est-à-dire leFile Control Block) d’un fichier en ext4 contient unelist d’extents sur 60 octets (la liste contient donc au plus 4 extents en plus du header).

Quelle est la taille maximale (en blocs ou en octets) d’un fichier dont tous les extents sont stockés de cette manière, uniquement dans l’inode ? (1 point)

Correction : Chaque extent indique le nombre de blocs de l’extent sur 2 octets (16 bits). Il peut donc indiquer au plus 216 blocs. Pour 4 extents, nous avons donc au plus 4×216 = 218 blocs indexés de 4Ko chacun, soit en tout 1 Go de données.

Indexation indirecte

En pratique, on procède à une indexation à plusieurs niveaux : la liste d’extents de l’inode peut pointer soit directement sur des blocs de données (comme nous l’avons vu à la question précédente), soit sur des blocs contenant à leur tour une liste d’extents :

— Si la liste d’extentscontenue dans l’inode pointe directement vers des blocs de fichier, on parle d’accès direct (c’est le cas que nous avons vu à la question précédente) ;

— Si elle pointe vers des listes d’extents qui, eux, pointent vers des blocs de fichiers, on parle d’accès indirect de niveau un ;

— Si elle pointe vers des listes d’extents qui pointent à leur tour vers des listes d’extents qui pointent vers des blocs de fichiers, on parle d’accès indirect de niveau 2 ;

— Et ainsi de suite. . .

Le niveau d’accès est indiqué dans le header de la liste d’extents sur l’inode.

Notez bien que lorsqu’un bloc contient une liste d’extents, ceux-ci occupent tout le bloc.

Questions

4. Combien d’extents peut-on mettre dans une liste qui occupe un bloc complet ? (1 point)

Correction : Dans un bloc, on a 4096 = 341 octets (reste 4). On peut donc placer 340extents de 12o en plus du header (de 12o aussi). Chaque extent addresse 216 blocs de 4Ko.

La taille maximale du fichier est donc de 340×216 blocs, soit 22282240 blocs ou 85 To.

Notons au passage qu’en ext4, les 4 octets restant sur le bloc ne sont pas perdus ; ils servent à faire des checksums.

5. En vous aidant des réponses aux questions précédentes, quelle est la taille maximale (en blocs ou en octets) d’un fichier indexé en accès indirect de niveau un ? (1 point)

Correction : Chaque extent de l’inode peut référencer 216 blocs. Chaque bloc d’extents peut référencer 340×216 blocs de données. En tout, nous pouvons donc référencer 4× 340×216 times216 = 85×236 blocs (ou 21760 To de données).

(6)

6. De combien de niveaux d’indirection a-t’on besoin dans le pire des cas pour stocker les plus gros fichiers possibles (dont la taille a été calculée à la deuxième question) ? (1 point)

Correction : Les plus gros fichier ont 232 blocs (cf. question 2). Dans le meilleur cas, les données seront toutes à la suite les unes des autres et cela tient dans une indexation de niveau 1 comme vu ci-dessus. Dans le pire cas, ils sont tous séparés et il faut 232 extents de 1 bloc, ce qui ne tient pas sur 1 seul niveau.

Avec deux niveaux en utilisant uniquement des extents qui adressent un seul bloc dans les feuilles, nous avons 4×340×216×340×216 blocs adressés, ce qui est suffisant pour nos 232 blocs.

Références

Documents relatifs

Centrale 2012, filière MP, seconde épreuve Éléments de correction proposés par M.. Il en résulte aussitôt que R A ( IK ) est l’ensemble des suites de la forme indiquée

Mobilisez vos connaissances : quelle est la réaction réalisée dans les organites de la cellule de feuille de chêne : donnez

Le but est d'éliminer après chaque pesée un maximum de fausses pièces (ici,il y en a 4) mais en même temps un maximum de bonnes pièces. On effectue une première pesée : 50

A random sample of 50 000 closure systems on a seven element set, plotted according to their number of irreducible closed sets (horizontal) and reducible closed sets (vertical).

BOMBA, élève en classe de terminale littéraire dans un Lycée de la place , a été absent au cours pendant une semaine à cause d’une intoxication alimentaire. Pendant son

a - Ecrire un programme pour afficher un d´ egrad´ e de couleur entre les couleurs rouge et verte : chaque point de coordonn´ ees (x, y) devra avoir une intensit´ e de couleur rouge

"Possédant initialement un couple de lapins, combien de couples obtient-on en douze mois si chaque couple engendre tous les mois un nouveau couple à compter du second mois de

Soit X un schéma dont l’ensemble sous-jacent contient au plus deux points, montrer que X est un schéma affine2. (4) Construire une immersion ouverte d’un schéma dans Spec A qui