Allocation de mémoire

Download Report

Transcript Allocation de mémoire

Allocation de mémoire
Allocation de mémoire
Concept de Base

Mémoire virtuelle :
– l'ensemble des informations
potentiellement accessibles par le
processeur
– l'ensemble des emplacements dont
l'adresse peut être engendrée par le
processeur.

Allocation Mémoire
– concrétiser la mémoire virtuelle
• mémoire réelle
Allocation de mémoire
• mémoire de masse (disque)
Informations accessibles par
un processus
– l'ensemble des informations désignables
dans son programme (objets)
– l'ensemble
des
informations
de
désignations (noms)
– la mise en correspondance noms/objets.
Allocation de mémoire
Du texte au processus

Etape de traduction
– mise en correspondance
• objets : emplacement mémoire
• noms : adresses relatives correspondantes

Etape d'édition de lien
– liaison entre programmes traduits
séparément

Etape de chargement
– affectation définitive des adresses
Allocation de mémoire
Désignation, liaison / Allocation
Langage
Mémoire
Virtuelle
Mémoire
physique
Nom
Adresse
virtuelle
Adresse
physique
Désignation
et liaison
Allocation
mémoire
Allocation de mémoire
Organisation de la mémoire
virtuelle

Mémoire virtuelle linéaire
– emplacements organisés séquentiellement
– adresses : entiers consécutifs

Mémoire virtuelle segmentée
– ensemble de segments d ’informations de même
nature
– adresses : (numéro de segment, déplacement)
Allocation de mémoire
Allocation Mémoire
doit permettre à un processus d'accéder à un
objet défini en mémoire virtuelle, en amenant
en temps voulu cet objet en mémoire principale
:
– réaliser la correspondance entre adresses virtuelles
et adresses physiques,
– réaliser la gestion de la mémoire physique
(allocation des emplacements, transfert de
l'information)
– réaliser le partage d'info entre utilisateurs;
– assurer la protection mutuelle d'info appartenant à
des usagers distincts.
Allocation de mémoire
Le recouvrement (overlay)
mémoir e physiq ue
A
A
B
pro gramme
B
C
A
A
C
ar bre de reco uvrement
B
co nfig urati on 1
C
co nfig urati on 2
Allocation de mémoire
Le recouvrement
– le découpage en segments est réalisé explicitement
– la correspondance entre adresse virtuelles et physiques est
réalisé une fois pour toutes,
– les zones de mémoires affectées aux segments sont
également allouées lors du chargement,
– le transfert des segments entre mémoire principale et
mémoire secondaire est réalisé, au cours de l'exécution du
programme, par des instructions spéciales insérées dans le
programme.
Allocation de mémoire
Différentes Réalisations de
l'Allocation Mémoire

implantation statique
– Correspondance virtuel/physique établie une fois
pour toutes

réimplantation dynamique
– Correspondance virtuel/physique variable dans le
temps
Allocation de mémoire
Différentes Réalisations de
l'Allocation Mémoire Physique

par zones
– de taille variable

par pages
– de taille fixe
Allocation de mémoire
Politique d'allocation

Idéale
– l'information nécessaire à l'exécution de l'instruction en
cours est immédiatement accessible au processeur (en
mémoire principale)

Plus réaliste
– réduire la probabilité que l'information soit absente de la
mémoire lorsqu'elle est nécessaire (défaut de segment ou
de page).
Allocation de mémoire
2 questions
– QUAND charger un objet en mémoire principale ?
• lorsqu'on en a besoin (chargement à la demande)
• avant d'en avoir besoin (pré-chargement).
– OU charger cet objet ?
• s'il y a assez de place libre, dans quels emplacements le
charger (placement)
• sinon, quel objet renvoyer en mémoire secondaire afin de
libérer de la place en mémoire principale (remplacement).
Allocation de mémoire
Comportement des
programmes

Non-Uniformité
– Un faible pourcentage des pages cumule
généralement un taux très important du
nombre total des références.
• Il est courant que plus des 75% des références
intéressent moins de 20% des pages
Allocation de mémoire
Comportement des
programmes

Localité
– Sur un temps d'observation assez court, la
répartition des références présente une
certaine stabilité.
• les références observées dans un passé
récent sont en général une bonne estimation
des prochaines références
Allocation de mémoire
Partage de la mémoire sans
réimplantation

Va-et-vient Simple (swapping)
–
–
–
–
zone fixe de mémoire réservée aux utilisateurs
programmes conservés sous forme absolue
exécution : amener un programme dans sa totalité
si réquisition
• sauvegarde de la mémoire du processus interrompu sur
disque avant le chargement du processus suivant.
Allocation de mémoire
Va-et-vient Simple (swapping)


Avantage: Simplicité
Inconvénients
– La CPU est inactive pendant le swapping
• on ne sauvegarde que la partie modifiée : la
zone des données
• l'algorithme de la "peau d'oignon" : recharger
que la partie recouverte
• conserver simultanément plusieurs
programmes : partition de la mémoire
Allocation de mémoire
Partition fixe de la mémoire




Mémoire partagée de façon statique en
plusieurs zones
Chaque programme est « pré-affecté » à une
zone
Conservés sur disque sous forme absolue
Pendant qu’un programme est transféré, une
autre peut s’exécuter.
Allocation de mémoire
Partition fixe de la mémoire
Système
zone1
zone2
mémoire physique
A
C
progr ammes
B
Allocation de la mémoire
Activité
{ Canal
UC
A(1)
B(2)
B(2)
A(1)
C (1)
C(1)
B(2)
chargement
sauvegar de
Chronogramme d'activité
Allocation de mémoire
progr ammes(zone)
Partition variable de la mémoire




Découpage en zones pas fixé a priori
Redéfini à chaque fin d’un programme
et répartie entre d ’autres programmes
Fixation des adresses au chargement
du programme
Pas de réimplantation dynamique
Allocation de mémoire
Allocation par zones

Réimplantation dynamique par registre
de base :
– les adresses des programmes sont en relatif
– la valeur d ’un registre (registre de base) est
systématiquement ajoutée à chaque adresse.

Déplacer un programme
– réinitialiser la valeur du registre de base à celle
de l ’adresse absolue du début de la zone
Allocation de mémoire
Algorithmes de gestion de la
mémoire par zones
– choix d'une représentation des zones,
– définition des critères de sélection d'une
zone libre,
– politique de libération d'une zone occupée,
– décision à prendre lorsqu'aucune zone ne
convient.
Allocation de mémoire
Représentation des zones

Une zone :
– taille
– adresse de début

La mémoire :
– nombre variable de zones
– liste des zones :
• ordre de libération des zones
• classement par adresse
• classement par taille
Allocation de mémoire
Algorithmes de sélection




demande d ’une zone libre de taille T
chercher une zone suffisamment grande
créer une zone libre avec le résidu
2 choix possible pour la recherche :
– la première possible (first fit)
– la plus petite possible (best fit)
• chaînage par tailles des zones
Allocation de mémoire
Libération d'une zone

Trois cas
• la zone libérée est entourée de deux zones
libres,
• la zone libérée est entourée d'une zone libre et
d'une zone occupée,
• la zone libérée est entourée de deux zones
allouées.

Regrouper les zones libres contiguës
• chaînage par adresses croissantes plus
pratique
Allocation de mémoire
Fragmentation et compactage


Problème de la fragmentation de la
mémoire
Compactage
• par recopie à l'intérieur de la mémoire
physique, en utilisant une instruction de type
MOVE.
• par recopies successives des zones sur disque
puis du disque en mémoire.
Allocation de mémoire
Principes et mécanismes de
base de la pagination

Mémoire virtuelle :
– page de taille fixe
– adresse virtuelle
• (numéro de page, déplacement)

Mémoire physique :
– case de même taille
– adresse réelle
• (numéro de case, déplacement)
Allocation de mémoire
Pagination simple
Mém oire
Virtuelle
Mém oire
Réelle
(1)
(2)
.
.
.
(3)
Fonction de
Pagination
(3)
.
.
.
(1)
(2)
Défaut de page
Allocation de mémoire
Fonction de pagination

Mémoire associative
Allocation de mémoire
Mémoire topologique
Adr. V irtuelle
npage
0
1
2
.
.
.
npage
dep
1
0
1 ncase
ncase
dep
Adr. Physique
NP-1
défaut de page
si présent = 0
Registres topographiques
Allocation de mémoire
Table de pages en mémoire :
Adr. Virtuelle
npage
dep
.
.
.
.
R. de base
ncase
.
.
.
.
.
.
.
.
.
.
1 0
prot
ncase
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Défaut de page
si présent = 0
npage
echec
modif
.
.
.
.
présent
npage
.
.
.
.
.
.
.
.
Table des pages
Allocation de mémoire
ncase
dep
Adr. physique
Pagination à deux niveaux
Adr. Virtuelle
nhyp
npage
de p
.
.
.
.
R. de base
+
table des
hyperpages
<
+
LTp
.
.
.
.
.
.
.
.
nhyp
npage
ncase
.
.
.
no n
succè s
Erreur
adressage
Table des
hyperpages
pré sent
ncase
1
LTp
Défaut de page
si présent = 0
Table des pages de
l'hyperpage nhyp
Pagination à deux niveaux
Allocation de mémoire
de p
Adr. physique
Mise en œuvre de la
pagination



Traduction num page / num case
Mise à jour du bit d'écriture et du bit
d'utilisation
Détection du défaut de page qui provoque un
déroutement
Allocation de mémoire
Défaut de page



trouver en mémoire secondaire la page
manquante
trouver une case libre en mémoire principale ;
s'il n'y a pas de case libre, il faut en libérer
une
provoquer le chargement de la page dans la
case ainsi rendue libre.
Allocation de mémoire
Gestion d'une mémoire
virtuelle paginée

Partition fixe ou variable
– fixe : un nombre fixe de case est alloué à chaque
processus

Pagination à la demande ou pré-chargement
– pagination à la demande : une page est chargée
lorsqu’il y a défaut de page
– pré-chargement : une page est chargée avant de
provoquer un défaut de page
Allocation de mémoire
Gestion d'une mémoire
virtuelle paginée

Remplacement local ou global
– local : la page enlevée appartenait au même
processus

Critère sur les pages :
– Pages "propres ou sales" :
• propre : qui n ’a pas été modifiée depuis son chargement
– Page partagée
– Page à statut spécial : tampon d’E/S
Allocation de mémoire
Description des algorithmes
de défaut de page




Aléatoire : la page enlevée est choisie de
manière aléatoire
FIFO : la page enlevée est choisie en fonction de
son ordre de chargement
Least Recently Used (LRU) : Ordre
chronologique d'utilisation
First In Not Used, First Out (FINUFO) : LRU sur
un bit.
Allocation de mémoire