Vous êtes sur la page 1sur 4

Universit de Nice-Sophia Antipolis

Licence S & T

Lundi 26 Mars 2007


Dure: 2h00

L3I6 : Systmes et Rseaux TD 7 (Corrig)

Franoise Baude (Francoise.Baude@unice.fr)

1. On considre la table des segments suivante pour un processus P1 :


segment
0
1
2
3
4

base
540
1254
54
2048
976

longueur
234
128
328
1024
200

Calculer les adresses relles correspondant aux adresses virtuelles suivantes, ou signaler les ventuelles erreurs dadressage qui engendreront un droutement puis le postage P1 dun signal du
type segmentation fault :
(0, 128), (1, 100), (2, 465), (3, 888), (4, 100), (4, 344)
Rappel : Les adresse donnes sont de la forme (segment,offset) o segment correspond au numro du segment et offset au dplacement dans le segment (numo doctet dans le segment).
Ladresse physique sobtient en ajoutant ladresse de base du segment au dplacement dans le
segment, mais condition que le dplacement ne soit pas suprieur la taille du segment moins
1 (car on compte le dplacement en partant de 0) :
(0,128) : Le segment 0 est long de 234 octets, donc le dplacement 128 est valide. Ladresse
physique est = @base + of f set = 540 + 128 = 668.
(1,100) : valide car 100 < 128 donc = 1254 + 100 = 1354.
(2,465) : invalide car 465 > 328 ! Cependant, ce nest pas forcment un bug du compilateur,
mais cela peut provenir dun mauvais comportement lors de lexcution (par exemple, trop
dallocation dynamique de mmoire). Une rfrence cette adresse provoquera donc une erreur
fatale (via un droutement), fatale au sens o cela provoquera larrt du processus fautif.
(3,888) : valide car 888 < 1024 donc = 976 + 888 = 1864
(4,100) : valide car 100 < 200 donc = 976 + 100 = 1076
(4,344) : invalide car 344 > 200.
Remarque : (4,200) est-elle valide ? Non car dans un segment de longuer 200, les dplacement
valides sont dans lintervalle [0 199].
2. Dans un systme pagin, les pages font 256 mots mmoire et on autorise chaque processus
utiliser au plus 4 cadres de la mmoire centrale. On considre la table des pages suivante du
processus P1 :
page
0
1
2
3
4
5
6
7

cadre
3
i
0
i
i
i
5
1

i signifiant que la page nest pas charge.


Quelle est la taille de lespace dadressage du processus P1 ( quelques mots prs) ?

Rappellons que lespace dadressage du processus est lespace dadressage virtuel form par les
pages. Comme il y a 8 pages, la taille de lespace virtuel est de 8 256 = 2048 mots. On a dit
quelques mots prs, juste pour faire comprendre que parmi toutes les adresses virtuelles possibles,
qui sont entre 0 et 2047, toutes ne sont pas forcment utilises. En dautres termes, lespace
dadressage virtuel dun processus nest pas compltement assimilable la quantit de mmoire
totale virtuelle ncessaire pour reprsenter ce processus. En effet, le compilateur/editeur de liens
sest surement pli aux conventions propres au systme dexploitation cible : il a artificiellement
recre lide de segments en plaant des adresses virtuelles bien prcises les diffrentes zones
(codes, donnes, pile, segments partags, etc), crant ainsi des trous dans lespace mmoire
virtuelle.
Calculer les adresses relles correspondant aux adresses virtuelles suivantes mises par P1 au
cours de son excution :
240, 546, 1578, 2072
Les adresses relles, par opposition aux adresses virtuelles, sont les adresses dans la mmoire
physique. La conversion dune adresse virtuelle en adresse relle est ralise par le MMU (Memory Management Unit) de la faon suivante :
(a) Calcul du numro de la page et du dplacement dans la page. Le premier correspond au
rsultat p de la division entire de ladresse virtuelle v par la taille c dune page, et le
second correspond au reste d de cette division (le modulo).
(b) On recherche dans la table de pages lentre qui correspond la page p de faon en
dduire le numro du cadre C.
(c) On obtient ladresse physique (relle) en ajoutant le dplacement d ladresse physique
de dbut du cadre C0 = C c : = C0 + d
Voici le dtail des calculs pour les adresses demandes :
240 = 0 256 + 240 : p = 0 et d = 240. Daprs la table C = 3 et donc C 0 = 3 256. Donc
= 3 256 + 240 = 1008
546 = 2 256 + 34 donc C = 0 et = 0 256 + 34 = 34.
1578 = 6 256 + 42 donc C = 5 et = 5 256 + 42 = 1322.
2072 est en dehors de lespace dadressage virtuel du processus (2048 mots). Il est mme
impossible que ceci arrive, car cela signifierait que lon serait capable dcrire sur le bus
dadresses, une adresse ncessitant plus de bits que la largeur du bus !
Supposons que P1 continue son excution en gnrant comme adresse virtuelle : 770. Que se
passera-t-il ?
770 = 3 256 + 2. Il sagit dune adresse situe dans la page 3. Or daprs la table des pages,
cette page nest pas prsente en mmoire. Une rfrence cette adresse provoquera donc un
droutement de type dfaut de page. Ce droutement nest pas une erreur fatale. Il va dclencher lexcution par le noyau de lalgorithme de pagination, qui va remplacer lune des 4 pages
prsente en mmoire par la page manquante (chargement partir du disque dur).
3. Reprenez lexemple de gestion mmoire pagine donn dans le cours dont le titre du transparent
est Application pratique (cf. Tanenbaum, p 104).
Considrez ladresse virtuelle suivante : 0000 000000000111. Dites comment scrira ladresse
relle, en binaire.
Les 4 bits de poids fort dsignent le numro page. Daprs la table de pages (p. 32 du cours), cette
page se trouve dans le cadre 010. Ladresse physique sobtient donc simplemnt en substituant au
4 bits de poids fort de ladresse virtuelle les 3 bits du numro de cadre :
010 000000000111.
Toujours en vous rfrant ce transparent, combien de cadres (et donc de quantit de mmoire
vive) dispose lordinateur pris en exemple ?
Comme les cadres sont numrots seulement sur 3 bits, on peut raisonnablement supposer quil
ny a que 23 = 8 cadres et donc seulement 8 212 = 215 = 32768 mots de mmoire physique.
4. Un programme a un espace virtuel de 600 mots. On considre la suite des adresses virtuelles :
34, 123, 145, 510, 456, 345, 412, 10, 14, 12, 234, 336, 412.
2

(a) Donner la suite des numros de pages rfrencs, sachant quelles comportent 100 mots.
Il suffit de diviser ldresse par 100, ce qui donne la liste suivante :
0, 1, 1, 5, 4, 3, 4, 0, 0, 0, 2, 3, 4
(b) Le programme dispose de 300 mots en mmoire centrale. Calculer le taux de dfauts de page
(en supposant la mmoire initialement vide) pour les algorithmes OPT, FIFO (First Page In,
First Page Out), LRU (Least Recently Used), FIFO de la seconde chance.
Les tableaux suivants reprsentent loccupation des 3 cadres au cours du temps. Les dfauts
de pages sont signals sur la dernire ligne du tableau. Pour FIFO, le signe + dsigne la
tte de la FIFO. Pour OPT il dsigne la ou les pages qui seront rfrences le plus tard
(ou jamais plus) dans le futur. Pour LRU, il dsigne le cadre contenant la page la moins
rcemment accde.
FIFO
refs : 0
1
1
5
4
3
4
0
0
0
2
3
4
C1
+0 +0 +0 +0 4
4
4 +4 +4 +4 2
2
2
C2
1
1
1 +1 3
3
3
3
3 +3 +3 4
C3
5
5 +5 +5 0
0
0
0
0 +0
def ? D
D
D
D
D
D
D
D
refs :
C1
C2
C3
def ?

0
+0
D

1
0
+1
D

1
0
+1
-

5
0
+1
+5
D

4
0
4
+5
D

OPT
3
4
0
0
4 +4
+3 3
D
-

0
0
+4
3
-

0
0
+4
3
-

0
+0
4
3
-

2
+2
4
3
D

3
+2
4
+3
-

4
+2
+4
+3
-

refs :
C1
C2
C3
def ?

0
+0
D

1
+0
1
D

1
+0
1
-

5
+0
1
5
D

4
4
+1
5
D

LRU
3
4
4
4
3
3
+5 +5
D
-

0
4
+3
0
D

0
4
+3
0
-

0
4
+3
0
-

2
+4
2
0
D

3
3
2
+0
D

4
3
+2
4
D

0
+41
31
01
-

2
21
+30
00
D

refs :
C1
C2
C3
def ?

0
+01
D

1
+01
11
D

1
+01
11
-

5
+01
11
51
D

FIFO 2de chance


4
3
4
0
41
41
41
+41
+10
31
31
31
50
+50 +50
01
D
D
D

0
+41
31
01
-

3
21
31
+00
-

4
+21
31
41
D

5. On supposera dans tout lexercice que les adresses virtuelles sont sur 32 bits.
(a) Si la gestion mmoire est pagine avec des pages de taille 8K (calque sur celle des cadres),
combien dentres contient la table des pages dun processus ?
8192 = 213 : sur les 32 bits dune adresse, 13 sont utiliss pour reprsenter le dpacement
dans la page. Il reste donc 19 bits pour rpresenter le numro de page. La table de page
doit donc pour voir contenir jusqu 219 = 512K pages. En supposant que les adresses
physiques sont aussi codes sur 32 bits, un calcul identique nous montre que la mmoire
physique peut comporter jusqu 219 cadres diffrents, et dans ce cas, chaque entre de la
table devrait occuper 19 bits. La taille totale de la table serait donc de 2 19 19 bits, soit
environ 1Mo par processus !
(b) Soit un systme de gestion mmoire pagine deux niveaux, cest--dire dans lequel la table
des pages nest pas dun seul tenant mais se dcompose en une table de tables des pages.
Lintrt de ceci est de navoir charger en mmoire lorsque le processus sxcute que la
table des pages de premier niveau et la table des pages de 2me niveau active.
On cherche cette fois-ci quelle est la taille des pages, et par consquent le nombre de pages
de lespace virtuel dun processus.
3

Pour ce faire, on sait de plus que les adresses virtuelles se dcomposent en un champ de 9
bits servant dindex dans la table des pages de premier niveau, puis dun champ de 11 bits
servant dindex dans la table des pages de deuxime niveau, les bits restant tenant lieu de
dplacement dans la page.
Cette description correspond au mode normal de gestion des pages sur une architecture intel
32 bits, dans un systme tel que Linux. La figure ci-aprs illustre ce mode de fonctionnement.

#$ !

%&

'

La pagination normale des 80x86


1
%.
31

$&/ 0

+
&1,+

/22" &

22 21

12 11

"

!"
#
$%! %
&
'
*

!( )
&+,

Vous aimerez peut-être aussi