Вы находитесь на странице: 1из 5

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
Adresse Zone 2 suivant
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 P2 P3
d'exploitation
0 400K 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 5 6 8 3 9 6 12 3 6 10
case 1 3 3 3 3 3 9 9 9 9 9 10
case 2 5 5 5 5 5 5 12 12 12 12
case 3 6 6 6 6 6 6 3 3 3
case 4 8 8 8 8 8 8 6 6
défaut D D D D D D D D D

LRU
accès 3 5 6 8 3 9 6 12 3 6 10
case 1 3 3 3 3 3 3 3 3 3 3 3
case 2 5 5 5 5 9 9 9 9 9 10
case 3 6 6 6 6 6 6 6 6 6
case 4 8 8 8 8 12 12 12 12
défaut D D D D D D

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 4
1
v 5
8 Page 3 S1B 2

12 i 3
v 10 Page 1 S1A 4
4
i Page 2 S1A 5

Page 1 S3A 6
v 6
7
Table des pages des segments
8
Table des segments proc B i
9
v 11
10
16 v 2
Page 2 S1B 11
8 i
12
13
v 15 14
i
Page 1 S2B 15

Table des pages des segments


MC

Вам также может понравиться