Cours INF2610 - Noyau d’un système d’exploitation

Page 1 sur 9Lecteur de document UniversityLib

Cours INF2610 - Noyau d’un système d’exploitation

Programming, Operating Systems, Computer Science · exam

Voir tous les documents en systèmes d'exploitation et cloud

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

ECOLE POLYTECHNIQUE DE MONTREAL

Département de génie informatique et génie logiciel

Cours INF2610: Noyau d’un système d’exploitation (Hiver 2012)

3 crédits (3-1.5-4.5)

CORRIG É DE L’EXAMEN FINAL

DATE: Vendredi le 20 avril 2012

HEURE: 9h30 à 12h00

DUREE: 2H30

NOTE: Toute documentation permise, calculatrice non programmable permise

Ce questionnaire comprend 5 questions pour 20 points

École Polytechnique de Montréal

page 1 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

Question 1 (3 points)

a) Vous êtes responsable de mettre en place un nouveau serveur de courriel et vous devez op-

timiser leur stockage sur disque magnétique. Vous devez choisir entre des blocs de 1024

ou 2048 octets pour le système de fichier. Chaque courriel est mémorisé sur le disque et la

taille des courriels varie de 3254 à 5254 octets et suit une distribution uniforme. La figure

1 montre les éléments du problème. i) Pour les blocs de 1024 octets, quelle est la propor-

tion de fichiers nécessitant 4, 5 et 6 blocs? ii) Estimez le pourcentage de perte d’espace par

fragmentation interne pour un système de fichier ayant des blocs de 1024 octets. iii) Répétez

pour des blocs de 2048 octets. Laquelle de ces tailles choisir pour maximiser le débit tout en

limitant la perte d’espace à 25% maximum? (2 points)

Figure 1: Éléments du problème de la question 1 a)

Entre 3254 et 4096, la perte sera de 842 à 0 octets, pour une moyenne de 842/2 = 421. Entre

4097 et 5120, la perte sera de 1023 a 0 pour des blocs de 1024, et de 2047 a 1024 pour des

blocs de 2048. De 5121 a 5254, la perte sera de 1023 a 894. Etant donné que la répartition

est uniforme, la moyenne est donc pour des blocs de 1024 octets de: 842/2000 * 842/2 +

1024/2000 1023/2 + (1023-894)/2000 (1023+894)/2 = 502.8 octets. Le pourcentage de

perte est donc de 502.8 / (3254 + 5254)/2 = 11.8%. Pour des blocs de 2048, la moyenne

est: 842/2000 842/2 + 1024/2000 (2047+1024)/2 + (1023-894)/2000 * (1023+894)/2 =

1027.1. Le pourcentage est donc de 1027.1 / (3254 + 5254)/2 = 24.1%. Les deux tailles de

blocs sont sous le seuil de perte maximal. Par contre, la taille de 2048 est préférable pour

maximiser le débit.

b) Soit un gros fichier dont une grande proportion est composée de zéros. Il est possible de

réduire le nombre de blocs occupés sur le disque pour ce fichier grâce au support des fichiers

creux. Décrivez une procédure permettant de transformer le fichier de départ en fichier creux.

(1 point)

Une procédure simple consiste à copier le fichier. Si une séquence continue de zéro est

détectée, alors faire un seek plutôt qu’un write, ce qui évitera d’occuper de l’espace sur le

À la fin, supprimer le fichier d’entrée. La séquence continue de zéros doit être au

disque.

moins de la taille d’un bloc. Avec deux blocs, il est garanti qu’au moins un bloc sera sauvé.

École Polytechnique de Montréal

page 1 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

Question 2 (4 points)

a) Les requêtes de lecture sur un disque pour les cylindres suivants sont en queue initialement:

22, 2, 33, 3, 12, 40, 0, 7. Les requêtes suivantes s’ajoutent en cours de route: cylindre 27

a 10ms, 25 a 26ms et 31 a 42ms. Le systeme utilise l’algorithme de l’ascenseur et insère

les nouvelles requêtes au fur et à mesure dans son ordonnancement. La tête est initialement

positionnée sur le cylindre 10 et se déplace en descendant. Le déplacement de la tête re-

quiert 1ms par cylindre de déplacement. Quel est le temps total requis pour servir toutes ces

requêtes? (2 points)

Le système ordonnance les requêtes ainsi, puisqu’il est rendu au cylindre 10 et descend: 7,

Publicité

3, 2, 0, 12, 22, 33, 40. Les temps de passage à chaque cylindre sont: 7 (3), 3 (7), 2 (8), 0

(10), 12 (22), 22 (32), 33 (43), 40 (50). Lorsque 27 s’ajoute a 10ms, la tête est a 0 et monte,

a 26ms pour 25, la tête est a 16 et monte, a 42ms pour 31, la tête est a 32, monte et devra

redescendre. Ceci donne donc au final: 7 (3), 3 (7), 2 (8), 0 (10), 12 (22), 22 (32), 25 (35),

27 (37), 33 (43), 40 (50), 31 (59). Le temps total est donc 59ms.

École Polytechnique de Montréal

page 2 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

b) Il arrive à l’occasion que plusieurs périphériques doivent se partager le même numéro d’inter-

ruption. Comment le système d’exploitation et ses pilotes d’interface peuvent-ils gérer cela

puisqu’on ne peut savoir a priori lequel des périphériques partageant le même numéro a

effectué une demande d’interruption? (1 point)

Le système d’exploitation doit appeler chaque pilote d’interface qui partage le numéro d’interruption

pour lui livrer la demande d’interruption. Le pilote sonde alors l’interface pour déterminer si

une interruption a été demandée, auquel cas le pilote retourne la valeur IRQ HANDLED. Le

système d’exploitation peut ainsi vérifier que l’interruption demandée a été trouvée et prise

en charge.

c) Le système d’exploitation Windows contient une couche d’adaptation au matériel (HAL) qui

est a un plus bas niveau que les pilotes d’interface. Pourtant, les pilotes d’interface sont a très

bas niveau puisqu’ils parlent directement avec le matériel et doivent connaˆıtre les spécificités

de l’interface comme ses registres ou les codes requis pour effectuer différentes commandes.

En Linux aussi, une couche semblable existe. En effet, certains pilotes d’interface (e.g. carte

réseau PCI) peuvent être utilisés sans modification sur différents systemes (e.g. systeme Intel

x86 ou MIPS). Expliquez en quoi consiste cette couche d’adaptation? (1 point)

La couche d’adaptation permet d’isoler le pilote d’interface de certaines particularités pro-

pres à l’architecture comme comment réserver un numéro d’interruption ou des adresses

d’E/S et comment interagir avec les interruptions ou lire et écrire vers les E/S (e.g. instruc-

tions spécialisées versus E/S calquées sur la mémoire). Pour ce faire, la couche d’adaptation

offre un certain nombre de fonctions ou macros qui effectuent ce travail de manière appro-

priée pour chaque architecture différente.

Question 3 (3 points)

Soit le graphe des ressources de la figure 2.

a) Donnez une séquence d’exécution menant à cet interblocage. (2 points)

• P1 obtient R3

• P1 obtient R2

• P2 obtient R1

• P3 obtient R5

• P3 obtient R4

• P3 demande R1 et bloque

• P2 demande R2 et bloque

• P1 demande R4 et bloque

École Polytechnique de Montréal

page 3 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

Figure 2: Graphe des ressources de la question 3

b) Vous êtes responsable de l’assurance qualité d’un logiciel d’enchère en ligne. Vous de-

vez évaluer le logiciel produit par votre équipe de développement. Expliquez les stratégies

qu’il serait possible d’utiliser pour s’assurer que le logiciel ne présente pas d’interblocage,

même si plusieurs utilisateurs tentent de miser en même temps. Nommez les avantages et

inconvénients de chacune. (1 point)

La premiere ligne de défense est le test de charge, qui consiste a simuler un grand nombre

de requêtes simultanées sur le systeme, peu coûteux et facile a faire, mais n’est pas une

preuve qu’il n’existe pas d’interblocage possible. Une méthode formelle serait envisageable

pour une section critique du code, stratégie plus coûteuse, mais qui apporte la preuve que le

logiciel ne permet pas d’interblocage.

École Polytechnique de Montréal

page 4 sur 4

Publicité

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

Question 4 (4 points)

Soit l’extrait de code suivant:

printf("CreatePipe a échoué (%d).\n", GetLastError());

ExitProcess(1);

1 [...]

2 SECURITY_ATTRIBUTES saAttr;

3 saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);

4 saAttr.bInheritHandle = FALSE;

5 saAttr.lpSecurityDescriptor = NULL;

6

7 if (!CreatePipe(&FD[0], &FD[1], NULL, 0)) {

8

9

10 } else

11

12

13

14 if (!CreateProcess("child.exe", buf, NULL,

15

16

17

18 }

19 [...]

printf("FD[0]= %d, FD[1]=%d\n", FD[0], FD[1]);

NULL, FALSE, 0, NULL, NULL, &si, &pi)) {

printf("CreateProcess a échoué (%d).\n", GetLastError());

ExitProcess(1);

a) Indiquez les modifications a apporter pour que le processus child.exe ait acces au tube

créé. (2 points)

Trois modifications sont nécessaires: saAttr.bInheritHandle = TRUE, CreatePipe(..., ..., &saAttr,

0) et CreateProcess(..., ..., ..., ..., TRUE, ...);

b) WinAPI définit la fonction WaitForMultipleObjects() pour attendre la fin de plusieurs

processus. Écrivez la fonction int multiwait(pid t *lst, int nb) équivalente

pour Linux, qui prend en paramètre un tableau de PID et la taille du tableau. Retournez -1 en

cas d’erreur. Pour simplifier, assumez que l’argument INFINITE est utilisé comme délai

d’attente. Que peut-on faire de plus avec WaitForMultipleObject() contrairement à

la fonction multiwait(), outre l’option du délai d’attente? (2 points)

int multiwait(pid_t *lst, int nb) {

int i;

int status;

for (i=0; i<nb; i++) {

if (waitpid(lst[i], &status, 0) < 0);

return -1;

}

return 0;

}

École Polytechnique de Montréal

page 5 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

L’avantage est que la fonction WaitForMultipleObjects() prend en paramètre d’autres

types de handle (sémaphore, évènement, etc), donc est plus polyvalente que la fonction

multiwait() qui est spécifique pour attendre la fin d’un groupe de processus.

École Polytechnique de Montréal

page 6 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Publicité

Examen final - Hiver 2012

Question 5 (6 points)

a) Les processus suivants sont soumis à l’ordonnanceur aux temps indiqués avec la durée

et le niveau de priorité associés (0 la plus faible priorité).

Ils sont listés dans le format

(arrivée : durée : priorité): P1(0:10:3), P2(2:6:4), P3(4:8:2), P4(6:12:1), P5(8:4:5). A

chaque unité de temps, l’ordonnancement peut changer en fonction des nouvelles tâches ar-

rivées. Donnez l’ordonnancement et le temps d’attente moyen pour chacun des algorithmes

d’ordonnancement suivants: i) tourniquet avec un quantum de 2 où une tâche nouvellement

arrivée est placée en début de tourniquet et obtient immédiatement la main lorsqu’un quan-

tum vient de se terminer, ii) selon les priorités, iii) la tâche avec le plus court temps restant

en premier (SRT). (3 points)

L’ordonnancement sera le suivant avec le tourniquet: P1, P1, P2, P2, P3, P3, P4, P4, P5,

P5, P1, P1, P2, P2, P3, P3, P4, P4, P5, P5(fin), P1, P1, P2, P2(fin), P3, P3, P4, P4, P1, P1,

P3, P3(fin), P4, P4, P1, P1(fin), P4, P4, P4, P4(fin). Les temps de fin (P1 à P5) sont donc

36, 24, 32, 40, 20, les temps de séjour 36, 24 - 2, 32 - 4, 40 - 6, 20 - 8 (moyenne 26.4) et

les temps d’attente 36 - 10, 24 - 2 - 6, 32 - 4 - 8, 40 - 6 - 12, 20 - 8 - 4 (moyenne 18.4).

L’ordonnancement par priorité est: P1, P1, P2, P2, P2, P2, P2, P2(fin), P5, P5, P5, P5(fin),

P1, P1, P1, P1, P1, P1, P1, P1(fin), P3, P3, P3, P3, P3, P3, P3, P3(fin), P4, P4, P4, P4, P4,

P4, P4, P4, P4, P4, P4, P4(fin). Les temps de fin (P1 à P5) sont: 20, 8, 28, 40, 12, les temps

de séjour 20, 8 - 2, 28 - 4, 40 - 6, 12 - 8 (moyenne 17.6), et les temps d’attente 20 - 10, 8 -

2 - 6, 28 - 4 - 8, 40 - 6 - 12, 12 - 8 - 4 (moyenne 9.6). Avec le plus court en premier, on a:

P1, P1, P2, P2, P2, P2, P2, P2(fin), P5, P5, P5, P5(fin), P3, P3, P3, P3, P3, P3, P3, P3(fin),

P1, P1, P1, P1, P1, P1, P1, P1(fin), P4, P4, P4, P4, P4, P4, P4, P4, P4, P4, P4, P4(fin). Les

temps de fin (P1 à P5) sont 28, 8, 20, 40, 12, les temps de séjour 28, 8 - 2, 20 - 4, 40 - 6, 12

  • 8 (moyenne 17.6), et les temps d’attente 28 - 10, 8 - 2 - 6, 20 - 4 - 8, 40 - 6 - 12, 12 - 8 - 4

(moyenne 9.6).

b) Un système temps réel doit supporter plusieurs tâches périodiques (période: durée): P1(25:10),

P2(40:10), P3(35:10). Est-ce que l’ordonnancement peut se faire avec l’algorithme RMA

(priorité inversement proportionnelle à la période)? EDF? Démontrez-le. (2 points)

Avec RMA, la condition suffisante de Liu et Layland n’est pas satisfaite, ce qui ne permet

donc pas de conclure positivement. Il faut donc vérifier manuellement si un ordonnancement

est possible. Les priorités seront données P1 puis P3 et enfin P2. Au temps 0, P1 obtient la

main pour 10, a 10 P3 obtient la main pour 10, a 20 P2 obtient la main pour 5, préemption, à

25 P1 pour 10, à 35 P3 pour 10 et P2 a manqué son échéance! Nous pouvons donc conclure

que l’ordonnancement avec RMA n’est pas possible.

Avec EDF, on commence avec P1 pour 10, ensuite P3 pour 10, ensuite P2 pour 10, P1 pour

10, P3 pour 10, P1 pour 10, P2 pour 10 et etc. De toute manière, avec EDF l’ordonnancement

est toujours possible lorsque le taux d’utilisation est inférieur ou égal à 1.

c) Comment se compare l’algorithme EDF (priorité a l’échéance la plus proche) a RMA? Dans

quel cas RMA serait-il préférable? (1 point)

L’algorithme EDF va toujours au plus pressé et ne ratera donc aucune échéance, si l’ordonnancement

est possible et en l’absence d’autres considérations comme le délai de changement de con-

École Polytechnique de Montréal

page 7 sur 4

Département de génie informatique et génie logiciel

Cours INF2610 - Noyau d’un système d’exploitation

Examen final - Hiver 2012

texte. Il est donc généralement préférable. L’intérêt de RMA est qu’il s’agit d’un calcul

statique de priorité, il n’est donc pas nécessaire de constamment mettre à jour la priorité en

fonction des échéances, qui se rapprochent au fur et à mesure du temps qui avance. RMA

peut donc être intéressant si l’ordonnancement est garanti, par exemple un système parfaite-

ment périodique qui satisfait la condition de Liu et Layland

Par: Michel Dagenais et Francis Giraldeau

École Polytechnique de Montréal

page 8 sur 4

Département de génie informatique et génie logiciel