EXERCICES DIRIGES 6 Gestion de la mémoire centrale

Transcription

EXERCICES DIRIGES 6 Gestion de la mémoire centrale
Méthodes de Programmation système 2001-2002
Joëlle Delacroix
__________________________________________________________________________________________
EXERCICES DIRIGES 6
Gestion de la mémoire centrale
CORRECTION
Exercice 1 : Gestion d'une mémoire par zones
Question 1
Une zone libre contient un en-tête de deux mots :
mot1 : adresse de la zone libre suivante
mot2 : taille de la zone
Les zones libres sont organisées selon une liste chainée, repérée par un pointeur de début :
adresse_premiere_zone.
Adresse_premiere_zone
suivant
Adresse Zone 2
Taille Zone 1 : T1
taille
T1
Adresse Zone 3
Taille Zone 2 : T2
Zone libre
T2
NULL
NULL
Taille Zone 3 : T3
T3
Question 2
Algorithme First Fit : la première zone de taille suffisante est sélectionnée.
On choisit par ailleurs d'implanter le programme en fin de zone libre de manière à faciliter la
gestion des pointeurs.
gestion du résidu issu de l'allocation : soit α la taille de la zone résiduelle, α = Ti – T où Ti est
la taille de la zone et T la taille du programme à allouer.
Deux cas sont possibles en fonction de ε, la taille minimale de zone autorisée.
1/ α < ε, la zone résiduelle est jugée négligeable et elle est alors supprimée de la liste des
zones libres (! modification du chainage des zones libres).
α ≥ ε, la zone résiduelle est conservée (!modification de la taille de la zone libre).
D'où l'algorithme suivant avec
parcours, avant : pointeurs sur zone libre
A : adresse d'implantation du programme de taille T
1
Méthodes de Programmation système 2001-2002
Joëlle Delacroix
__________________________________________________________________________________________
hors cas particulier sur le chainage (zone libre en tête et fin de liste).
Parcours := premiere_zone_libre; avant := premiere_zone_libre; trouve = faux;
tant que (parcours <> NULL et trouve = faux)
faire
si (parcours.taille >= T)
alors
- on a trouvé une zone de taille suffisante
parcours.taille = parcours.taille – T;
A := parcours + parcours.taille;
trouve = vrai;
si (parcours.taille < ε)
- on libère la zone libre résiduelle
avant.suivant = parcours.suivant;
fsi
avant = parcours;
parcours = parcours.suivant;
fait
Question 3
parcours = adresse_premiere_zone; avant = adresse_premiere_zone;
taille_mem = max; trouve = faux;
tant que (parcours <> NULL)
faire
si (T <= parcours.taille < taille_mem)
alors
- on retient la zone
zone_trouve = parcours;
taille_mem = parcours.taille;
zone_avant = avant;
trouve = vrai;
fsi
avant = parcours;
parcours = parcours.suivant;
fait
- à la sortie de la boucle zone_trouve contient l'adresse de la zone dont la taille engendre la
plus petit residu sauf si trouve = faux
si (trouve == vrai)
alors
zone_trouve.taille = zone_trouve.taille – T;
A = zone_trouve + zone_trouve.taille;
si (zone_trouve.taille < ε)
- on libère la zone libre résiduelle
zone_avant.suivant = zone_trouve.suivant;
fsi
fsi
2
Méthodes de Programmation système 2001-2002
Joëlle Delacroix
__________________________________________________________________________________________
Question 4
Il y a deux espaces libres : la zone (1700K-2000K) et la zone (2300K-2560K) soit un total de
560K ce qui est supérieur à la taille de P5. Mais ces deux zones ne sont pas contiguës et on ne
peut donc pas allouer l'espace mémoire à P5.
Il faut donc compacter l'espace mémoire pour arriver à la configuration
Système
P1
d'exploitation
0
400K
P2
P3
1000K
1700K
2000K
2560K
Question 5
Une zone libérée doit être fusionnée à sa voisine si celle-ci est également une zone libre :
différents acas doivent être considérés.
- Cas 1 : la zone libérée est elle-même précédée d'une zone libre ZL : on effectue
une fusion et on modifie la taille de ZL : ZL.taille = ZL.taille + zoneliberee.taille;
- Cas 2 : la zone libérée est cernée par deux zones occupées : on crée une nouvelle
zone libre
- Cas 3 : la zone libérée est suivie par une zone libre : on fusionne les deux zones
(on ajoute les tailles des deux zones) et on modifie le chainage des zones libres. les
infos de gestion (taille et suivant) sont "remontées" dans les deux premiers mots de
la zone libérée.
- Cas 4 : la zone libérée est cernée par deux zones libres A et C : on fusionne les
trois zones libres. c'est-à-dire : la zone libre C est supprimée du chainage et les
infos de gestion sont remontées dans les deux premiers mots de la zone A.
Exercice 2 : Pagination
Question 1
Décrivez le format d'une entrée de la table des pages d'un processus.
entrée n
V
M
A
Protec
adresse réelle
bit V : indique si la page est prése,nte ou non en mémoire centrale V= 0, page non présente
bit M : indique si la page a été modifiée
bit A : champ pour les informations à la apge (algorithmes de remplacement de pages)
protec : champ de protection pour les accès en lecture/écriture/exécution
adresse réelle : adresse de la case contenant la page.
Question 2
adresse_reelle et adresse_virtuelle sont fde type adresse, ce type est formé de deux champs :
champ1 et champ2
instruction est de type type_instruction qui peut prendre pour valeurs : lecture, écriture et
exécution.
procedure décodage (adresse_réelle : adresse, adresse_virtuelle : adresse, instruction :
type_instruction)
debut
3
Méthodes de Programmation système 2001-2002
Joëlle Delacroix
__________________________________________________________________________________________
A = table_des_pages(adresse_virtuelle.page);
si (A.V ==0)
alors
réveil du processus de défaut de page : chargement de la page et mise à jour de
la table des pages
fsi
Verifier_droits_accès (instruction, A. protec);
A.A = 1; - on positionne l'accès à la page
si (instruction == écriture)
alors
A.M = 1;
fsi
adresse_reelle.champ1 = A.adresse_reelle;
adresse_reelle.depl = adresse_virtuelle.depl;
fin
Question 3
Soit la liste des pages virtuelles référencées aux instants t = 1, 2, …, 11
3 5 6 8 3 9 6 12 3 6 10
FIFO
accès 3
case 1 3
case 2
case 3
case 4
défaut D
LRU
accès 3
case 1 3
case 2
case 3
case 4
défaut D
5
3
5
6
3
5
6
D
D
5
3
5
6
3
5
6
D
D
8
3
5
6
8
D
3
3
5
6
8
9
9
5
6
8
D
6
9
5
6
8
12
9
12
6
8
D
3
9
12
3
8
D
6
9
12
3
6
D
10
10
12
3
6
D
8
3
5
6
8
D
3
3
5
6
8
9
3
9
6
8
D
6
3
9
6
8
12
3
9
6
12
D
3
3
9
6
12
6
3
9
6
12
10
3
10
6
12
Question 4
! question de cours
4
Méthodes de Programmation système 2001-2002
Joëlle Delacroix
__________________________________________________________________________________________
Question 5
Table des segments proc A
v
v
4
5
1
8
12
Page 3 S1B
3
i
v
4
10
i
v
6
Page 1 S1A
4
Page 2 S1A
5
Page 1 S3A
6
7
Table des pages des segments
Table des segments proc B
2
8
i
v
11
16
v
2
8
i
9
10
Page 2 S1B
11
12
13
v
15
14
i
Page 1 S2B
Table des pages des segments
MC
5
15