Gestion de la mémoire

Download Report

Transcript Gestion de la mémoire

Chapitre 4
GESTION DE LA MÉMOIRE
4.1 Gestion élémentaire de la mémoire
4.2 Le va-et vient (swaping)
4.3 La mémoire virtuelle
4.4 Algorithmes de remplacement de pages
4.8 La segmentation
1
GESTION DE LA MÉMOIRE

Idéalement, on voudrait que la mémoire soit





Hiérarchie de la mémoire




grande
rapide
non volatile
bon marché
Petite quantité de mémoire rapide et volatile mais chère (cache)
Quelques mégaoctets de mémoire volatile de vitesse et prix moyen
(mémoire principale)
Quelques gigaoctets de mémoire plus lente, non volatile et bon marché
(disque)
Cette hiérarchie est gérée par le gestionnaire de la
mémoire
2
GESTION ÉLÉMENTAIRE DE LA MÉMOIRE
MONOPROGRAMMATION SANS VA-ET-VIENT NI PAGINATION



Un seul procesus en mémoire à la fois
Les adresses utilisées dans les programmes correspondent à des
adresses réelles en mémoire.
Trois façons simples d'organiser la mémoir:

Dans b et c, le haut de la mémoire corespond à la mémoire morte (ROM)
3
MULTIPROGRAMMATION AVEC PARTITIONS

Partitions de taille fixe

files d'attente différentes pour chaque partition


Inconvénient: les grandes partitions peuvent être inutilisées
Une seule file d'attente

On choisi une tâche pouvant être placée dans la prochaine partition libre
4
MODÉLISATION DE LA MULTIPROGRAMMATION



La multiprogrammation permet d’augmenter l’utilisation du CPU
p = fraction du temps passé à attendre la fin d’une E/S
Taux d'utilisation du CPU ( 1-pn ) en fonction du nombre de processus en
mémoire.
5
ANALYSE D’UN SYSTÈME DE TRAITEMENT PAR LOT
a)
b)
Temps d'arrivé et travail pour 4 tâches
Taux d'utilisation du CPU avec 80% d'entrée/sortie
6
ANALYSE D’UN SYSTÈME DE TRAITEMENT PAR LOT
c)
Succession des événements alors que les tâches arrivent et se
terminent.




Durant les 10 première minutes la tâche 1 est seule et utilise 20% du
temps CPU (2 minutes)
Durant les 5 minutes suivantes il y a 2 tâches, chacune utilisant 18%
du temps CPU (0,9 minute )
Durant les 5 minutes suivantes il y a 3 tâches, chacune utilisant 16%
du temps CPU (0,8 minute)
Durant les 2 minutes suivantes il y a 4 tâches, chacune utilisant 15%
du temps CPU (0,3 minute)
7
RÉALLOCATION ET PROTECTION

On ne peut pas prévoir où en mémoire un programme sera
chargé



2 solutions:
1.
2.

Les adresses ne peuvent pas être absolues
Un programme ne doit pas adresser l'espace d'un autre
Au moment de mettre un programme en mémoire on modifie
toutes les adresses
On utilise deux registres spéciaux
Registres de base et de limite


Chaque adresse est additionnée au registre de base pour
déterminer l'adresse physique
Il y a erreur si l'adresse est plus grande que la valeur du regisre de
limite.
8
LE VA-ET-VIENT (1)

Il n’est pas rare d’avoir entre 40 et 60 processus de
lancés au démarrage d’une machine.

Une application typique consomme entre 50 et 200 Mo
de mémoire. Souvent plus (ex. IE explorer, Safari ou
Firefox)

On est donc rapidement à court de mémoire.

La méthode du va-et-vient (swapping) consiste à
déplacer un processus de la mémoire vers le disque
afin de libérer de l’espace pour y introduire un autre
processus (nouvellement créé ou ayant préalablement
été déplacer vers le disque).
9
LE VA-ET VIENT (2)
L'allocation de la mémoire change au gré des processus
qui viennent en mémoire et ceux qui quittent la
mémoire
Les zones grises indiquent la mémoire non utilisée
10
LE VA-ET-VIENT (3)
a)
b)
Allocation d'espace pour l'accroissement du segment de données
Allocation d'espace pour l'accroissement de la pile et du segment de
données (espace alloué dynamiquement)
Quand il y a trop de trous il est nécessaire de compacter la mémoire
11
GÉRER LA MÉMOIRE (1)
1.
Utilisation d’une table de bits:

La mémoire est divisée en unités d’allocation dont la taille
peut varier de quelques mots à plusieurs kilo-octets

Une table de bits est utilisée pour indiquer si une unité
d’allocation est libre ou non.

La taille de la table dépend de:
1.
2.
La taille de la mémoire
La taille des unités d’allocation

Avantage: simplicité

Inconvénient: La recherche d’un espace de k unités
libres est une opération lente.
12
GÉRER LA MÉMOIRE (2)
2.
Utilisation de listes chaînées:

Liste chaînée des segments de mémoire alloués et libres

Un segment (noeud de la liste) est soit un processus, soit un
trou entre deux processus

Chaque noeud contient l’état du segment (P: Processus,
T:Trou), l’adresse du début du segment et sa longueur.

La liste peut être triée par adresses

Chaque entrée de la table des processus contient un pointeur
vers le noeud correspondant (si le processus est en mémoire).
13
GÉRER LA MÉMOIRE (3)
a)
Une partie de la mémoire avec 5 processus, 3 trous


b)
c)
Les petites marques verticales indiquent les unités d'allocation
Les zones grises sont libres
Le tableau de bits correspondant
Mêmes informations sous la forme d'une liste chaînée
14
GÉRER LA MÉMOIRE AVEC UNE LISTE CHAÎNÉE
Lorsqu’un processus X se termine, on regarde son voisinage dans la liste
des segments.
Il y a quatre situations possibles:
Il y a avantage a utiliser une liste de segments doublement chaînée afin de
faciliter la recherche du noeud précédent.
15
ALGORITHMES D’ALLOCATION DE LA MÉMOIRE
1.
Première zone libre (first fit)


2.
On trouve le premier trou suffisamment grand pour
contenir le processus.
Le trou est ensuite divisé en deux parties: une pour le
processus et l’autre pour la mémoire inutilisée.
Zone libre suivante (next fit)


Identique à l’algorithme précédent sant que la recherche
commence au dernier espace libre trouvé.
Les performance sont légèrement meilleures
16
ALGORITHMES D’ALLOCATION DE LA MÉMOIRE
3.
Meilleur ajustement (best fit)




4.
Parcourt toute la liste et recherche le plus petit trou
pouvant contenir le processus.
Évite de partitionner inutilement les gros trous
Cet algorithme crée des trous minuscules inutilisables par
la suite
Plus lent que les algorithmes précédents
Plus grand résidu (worst fit)



On prend le plus grand trou disponible
Le trou restant est assez grand pour être réutilisé
Des simulations démontrent que cette solution n’est pas
meilleure que la précédente.
17
ALGORITHMES D’ALLOCATION DE LA MÉMOIRE
Un peut utiliser deux listes distinctes (zones libres et
occupées par un processus)
Accélère les algorithmes précédents


Ralentissement quand la mémoire est libérée



Si la liste des trous est triée par taille alors best-fit et first-fit sont
essentiellement équivalents.
Un segment libéré est enlevé de la liste des processus et inséré
dans la liste des trous
On peut utiliser les zones libres elle même pour la liste
des zones libres.
18
ALGORITHMES D’ALLOCATION DE LA MÉMOIRE
5.
Placement rapide (quick fit)




On gère des listes séparées pour certaines des tailles
les plus communes
Par exemple, on peut avoir des listes de 4K0, 8K0,
12Ko, etc.
Très rapide.
Rend plus complexe le processus de libération de la
mémoire: On doit chercher les trous adjacents pour une
vérifier si une fusion est possible.
Tous ces algorithmes souffrent du problème de la
fragmentation de la mémoire.
19
MÉMOIRE VIRTUELLE (1)

Solution au problème des programmes trop gros pour entrer en
mémoire.

Chaque programme possède son propre espace d’adressage
découpé en petite entités appelées pages.

Cet espace d’adressage représente une mémoire virtuelle qui
peut être plus grande que la mémoire physique.

Chaque page est une suite d’adresses contiguëes de la mémoire
virtuelle.

La taille des page est fixe (typiquement entre 512 octets à 64Ko)

Une adresse virtuelle est une adresse de la mémoire virtuelle.
20
MÉMOIRE VIRTUELLE (2)

Il n’est pas nécessaire d’avoir toutes les pages en mémoire
physique pour exécuter le programme.

Chaque page est indivisible:

Elle est entièrement en mémoire physique ou elle n’y est pas du
tout.

Les pages qui ne sont pas en mémoire sont placées sur le
disque.

Une table indique quelles sont les pages en mémoire ainsi que
l’adresse physique de celles-ci.

Le tout est géré de façon transparente par l’ unité de gestion
de la mémoire (MMU)
21
LA PAGINATION (1)
Localisation et fonction du MMU
22
LA PAGINATION (2)
La relation entre les adresses
virtuelles et physiques est
indiquée dans la table des pages
Dans l’exemple, un ordinateur peut
produire des adresses sur 16bits
(64 Ko) mais il n’y a que 32 Ko de
mémoire physique.
La mémoire virtuelle est divisée en
pages de 4K
La mémoire physique est divisée en
cadre de page (page frame)
23
LA PAGINATION (3)
Par exemple,
L’adresse virtuelle 0 est transformée
en adresse physique 8192=2*4096
L’adresse virtuelle 8192=2*4096 est
transformée en adresse physique
24576=6*4096
L’adresse virtuelle 20500=5*4096+20
est transformée en adresse
physique 12308=2*4096+20
24
LA PAGINATION (4)
Sur les systèmes Unix on peut obtenir la taille des pages à
l’aide de la commande: pagesize
Sur sunensdev la taille des page est de 8Ko
Sur Mac OS X la taille des pages est de 4Ko
25
TABLE DES
PAGES (1)
Fonctionnement
interne du
MMU avec 16
pages de 4Ko
26
TABLE DES PAGES (2)
Deux problèmes:
1.
La table des pages peut être très grande
2.
Trouver l'adresse réelle à partir de l'adresse
virtuelle doit se faire très rapidement
Deux cas extrèmes (et non applicables):

La table est entièrement implémentée par le
matériel à l'aide d'un tableau de registres.

Un seul registre pointant sur le début de la
table qui est entièrement chargée en mémoire.
27
TABLE DES PAGES (3)
Entrée typique d'une table des pages

Présent/Absent: si 0 cela provoque un défaut de page

Protection: lecture, écriture, exécution

Modifié (dirty bit) : Si aucune modification, il n’est pas nécessaire de sauverager sur
le disque. Lors d’une écriture, automatiquement mis à 1


Référencié: Permet de décider si la page peut être remplacer par une autre

Cache inhibée: Utile pour les attentes d’E/S (on veut accéder aux données du
périphérique plutôt qu’à la cache
28
SUITE LA SEMAINE PROCHAINE
29
TABLE DES PAGES MULTINIVEAUX

Adresse 32 bits
avec 2 champs
de table des
pages

Table des pages
à deux niveaux
30
TLBS – TRANSLATION LOOKASIDE BUFFERS
(MÉMOIRE ASSOCIATIVE)
Valide
Page virtuelle
Modifié
Protection
Cadre de page
indices
code
données
données
code
code
pile
code
Une TLB pour accélérer la pagination
31
TABLES DES PAGES INVERSÉES
252-1
216-1



216-1
Comparaison entre une table des pages traditionnelle et une table des pages
inversée.
De plus en plus utilisé (surtout avec le développement des machines 64 bits)
Utilisé sur les machines 64 bits telles que PowerPC et UltraSparc
32
ALGORITHMES DE REMPLACEMENT DE PAGES

Une faute de page force le SE à choisir:



Les pages modifiées doivent d'abord être
sauvegardées


quelle page doit être enlevée
faire de la place pour la nouvelle page
sinon on peut simplement les écraser
Il est préférable de ne pas choisir une page
souvent utilisée

sinon il faudra la recharger bientôt
33
L'ALGORITHME OPTIMAL

Remplacer la page qui sera utilisée après toutes
les autres
 Optimal

mais irréalisable
On exécute deux fois un programme
 La
seconde fois on a l'information nécessaire pour
implémenter l'algorithme de remplacement de page
optimal
 Permet de comparer les performances
d'algorithmes réalisable avec l'algorithme optimal.
34
ALGORITHME DE REMPLACEMENT DE LA PAGE
NON RÉCEMMENT UTILISÉE (NRU)

Chaque page possède deux bits: R et M


4 classes de pages
1.
2.
3.
4.

ces bits sont mis à 1 lorsque la page est
référencée ou modifiée (le bit R est remis à
0 périodiquement).
non référencée, non modifiée
non référencée, modifiée
référencée, non modifiée
référencée, modifiée
NRU enlève une page au hazard

en partant du plus petit numéro de classe
35
ALGORITHME PREMIER ARRIVÉ, PREMIER SORTI

On maintient un liste des pages
 dans
l'ordre de leur chargement en mémoire

La page au début de la liste (la plus ancienne)
est remplacée

Désavantage
 les
vieille pages peuvent aussi être celles qui sont
le plus utilisées.
36
ALGORITHME DE LA SECONDE
CHANCE

Opération seconde chance:


pages triées selon l'ordre d'arrivé
Si le bit R de la page la plus ancienne est 1 alors on la met
à la fin de la liste (comme une nouvelle page) et on met
son bit R à 0.
37
ALGORITHME DE L'HORLOGE
Comme l'algorithme précédent mais l'utilisation
d'une liste circulaire évite de déplacer les pages.
38
ALGORITHME DE LA PAGE LA MOINS
RÉCEMMENT UTILISÉE (LRU)

On suppose que les pages qui ont été utilisées récemment le
seront à nouveau prochainement


Tenir à jour une liste chaînée de pages



on enlève les pages qui n'on pas été utilisées depuis longtemps
page la plus récemment utilisée en premier
mettre à jour cette liste à chaque référence mémoire: Couteux!!
Alternative: On utilise un compteur C incrémenté après chaque
instruction



on copie C dans la page des tables pour l'entrée de la page référencées
choisir la page avec la plus petite valeur de compteur
Aide matériel nécessaire
39
ALGORITHME DE LA PAGE LA MOINS
RÉCEMMENT UTILISÉE (LRU)

Autre solution matérielle:



Pour une machine à n cadres de page
Matrice nn
Quand une page k est référencée
mettre à 1 tous les bits de la rangée k
 mettre à 0 tous les bits de la colonnne k

40
EXEMPLE
Référence des pages: 0,1,2,3,2,1,0,3,2,3
41
ALGORITHME DU VIEILLISSEMENT



Un compteur logiciel par page (initialisé à 0)
À chaque interruption d'horloge, on examine toutes les entrées de
la table des pages
On décale à droite le compteur et on ajoute à gauche le bit R
42
ALGORITHME DU VIEILLISSEMENT
Différence avec LRU:

Si deux pages sont référencées entre deux
interruptions alors on ne peut pas dire laquel a été
référencée en dernier


Considérez par exemple les pages 3 et 5 de l’exemple précédent.
Les compteurs ont un nombre limité de bits

On ne peut pas distinguer deux pages dont tous les bits sont à 0
43
L'ALGORITHME DE L' ENSEMBLE DE TRAVAIL
• Pagination à la demande (demand paging): Les processus sont lancés
sans qu’aucune page ne soit en mémoire. Cela résulte en un grand nombre
de fautes de pages en début d’exécution.
• Le chargement des pages avant l’exécution est appelé: préchargement
• Le modèle de l ‘ensemble de travail est conçu pour réduire le nombre de
défauts de pages
• Temps virtuel courant: temps CPU utilisé depuis son démarrage
• L’ensemble de travail est constitué des pages référencés au cours des t
dernière secondes de temps virtuel. T doit être assez grand pour couvrir de
nombreux tops d’horloge.
• Au démarrage d’un processus, un ensemble de travail quelconque peut être
sélectionné
• Par exemple, la page contenant la fonction main d’un programme C
devrait faire partie de l’ensemble de travail initial.
44
L'ALGORITHME DE L' ENSEMBLE DE TRAVAIL
• Périodiquement toutes les pages ont leur bit R mis à 0
• À chaque faute de page, la table des pages est parcourue pour déterminer
quelles pages demeurent dans l’ensemble de travail
• Pour chacune des entrées:
• Si le bit R vaut 1:
• La page fait partie de l’ensemble de travail
• Le temps virtuel courant (TVC) est copié dans un champs spécial
indiquant le temps de la dernière utilisation (TDU)
• Si R vaut 0:
• On calcule Age=TVC-TDU
• Si Age > t alors la page est enlevée de l’ensemble de travail
• Sinon la page demeure dans l’ensemble de travail
• La page la plus âgée qui ne fait pas partie de l’ensemble de travail est
enlevé
• Si toutes les pages font partie de l’ensemble de travail alors on enlève la
page la plus âgée dont le bit R vaut 0
• Si une telle page n’existe pas, on enlève une page quelconque (de
préférence une qui n’a pas été modifiée).
45
L'ALGORITHME DE L' ENSEMBLE DE TRAVAIL
46
L'ALGORITHME WSCLOCK
(WORKING SET CLOCK)
• Utilise l’algorithme de l’horloge et les informations de l’ensemble de travail
• Liste circulaire initialement vide
• L’exemple suivant indique se qui se passe lorsque le bit R vaut 1
47
L'ALGORITHME WSCLOCK

Si le bit R vaut 0 alors


Si Age > t et que le clean bit M vaut 0 alors on peut remplacer la
page
Si Age > t et M = 1 alors


L’écriture de la page sur le disque est ordonnancée
En attendant on poursuit la recherche d’une page à remplacer
48
RÉSUMÉ DES ALGORITHMES DE
REMPLACEMENT DE PAGES
Algorithme
Commentaires
Optimal
Utilisé comme banc d'essai
NRU
Très grossier
FIFO
Peut écarter des pages importantes
Seconde chance
Grande amélioration de FIFO
Horloge
Réaliste
LRU
Excellent mais difficile à implanter
NFU
Approximation grossière de LRU
Vieillissement
Approximation efficace de LRU
Ensemble de travail
Coûteux
WSClock
Bonne efficacité
49
SUITE LA SEMAINE PROCHAINE
50
ANOMALIE DE BELADY




Algorithme FIFO avec 3 cadres de pages
Algorithme FIFO avec 4 cadres de pages
La lettre P indique les fautes de pages
L'algorithme LRU n'a pas fce problème
51
SEGMENTATION (1)
Comment libérer le programmeur de la gestion de
l’accroissement et de la diminution des tables?
Un solution consiste à doter la machine de plusieurs
espaces d’adresses indépendants appelés
segments.
Une adresse est constituée de deux parties:
<segment, déplacement>


Mémoire logique: Mémoire virtuelle segmentée
Mémoire linéaire: mémoire virtuelle paginée
52
SEGMENTATION (0)
Dans un espace
d'adressage à une
dimension, une table
des pages qui croît
peut en chevaucher
une autre.
53
SEGMENTATION (3)
Une mémoire segmentée permet à chaque table de croître ou de
diminuer indépendamment des autres.
Exemple: compilateur
54
SEGMENTATION (4)
Considérations
Le programmeur doit-il connaître la techique
utilisée?
Pagination Segmentation
Non
Oui
1
Plusieurs
L'espace total d'adressage peut-il dépasser la
taille de la mémoire physique?
Oui
Oui
Les procédures et les données peuvent-elles
être séparées et protégées séparément?
Non
Oui
Peut-on traiter facilement des tables dont les
tailles varient?
Non
Oui
Le partage de procédures entre utilisateurs
est-il simplifié?
Non
Oui
Combien y a-t-il d'espaces d'adressage
linéaires?
Comparaison entre la segmentation et la pagination
55
SEGMENTATION (5)
Pagination:
• Sert à obtenir un grand espace d'adressage linéaire
sans avoir à acheter de la mémoire physique.
Segmentation:
• Permet la séparation des programmes et des
données dans des espaces d'adressage logiquement
indépendants.
• Facilite le partage et la protection.
56
IMPLÉMENTATION DE LA SEGMENTATION PURE
(a)--(d) Dévelopement de la fragmentation externe (phénomène du damier)
(e) Compactage
57
SEGMENTATION AVEC PAGINATION: MULTICS (1)
Une table des
segments
contient
218 entrées.
Chaque entrée
contient un
descripteur de
segment qui
pointe sur une
table des pages
216 mots de 36 bits
par table des
pages
Adresse physique
sur 24 bits
58
SEGMENTATION AVEC PAGINATION: MULTICS (2)
Un descripteur de segment
L'adresse est complétée par 6 zéros car les adresse physiques de 24 bits
sont alignées sur des pages de 64 octets.
L’adresse des segments sur le disque se trouvent dans une autre table.
59
SEGMENTATION AVEC PAGINATION: MULTICS (3)
• Chaque segment est un espace d’adressage virtuel ordinaire
• Les segments peuvent être paginés ou non paginés
• Les espaces paginés utilisent des pages de 1024 ou de 64 octets
Une adresse virtuelle MULTICS sur 34 bits:
60
SEGMENTATION AVEC PAGINATION:
MULTICS (4)
Conversion d'une adresse virtuelle MULTICS en une adresse réelle
61
SEGMENTATION AVEC PAGINATION: MULTICS (5)
Les adresses des 16 pages les plus récemment référencées sont
gardées dans une mémoire associative
Version simplifiée de la TLB de MULTICS
62
SEGMENTATION AVEC PAGINATION
LE PENTIUM D'INTEL (1)




Utilise 2 tables (en mémoire):
 LDT (Local Descriptor Table)
 GDT (Global Descriptor Table)
Pour accéder à un segment, un programme doit charger un sélecteur de ce
segment (16 bits) dans un registre spécial
6 registres de segments:
 CS: contient un sélecteur du segment de code
 DS: contient un sélecteur du segment de données
 Les autres sont moins importants
Au moment où un un sélecteur est chargé dans un registre de segment, le
descripteur correspondant est est extrait de la LDT ou de la GDT
2*213 segments
230 mots de 32 bits par
segment
63
LE PENTIUM D'INTEL (2)
Un descripteur du segment de code d'un Pentium
(Les segments de données diffèrent légèrement)




64 octets par descripteur
Les 3 bits les moins significatifs du sélecteur sont mis à 0
On ajoute l’adresse de la LDT (ou de la GDT) pour avoir un pointeur
sur le descripteur de segment corespondant.
Un bit dans un registre système indique si la pagination est
désactivée
64
LE PENTIUM D'INTEL (3)



Conversion d'une paire (selecteur, déplacement) en une adresse linéaire.
Si la pagination est désactivée alors l'adresse linéaire correspond à une
adresse physique (segmentation pure)
On peut annuler la segmentation:



On utilise toujours le même sélecteur
On met le champs Base à 0 (pagination pure)
La valeur maximum est mise dans le champs limite.
65
LE PENTIUM D'INTEL (4)


Mappage d'une adresse linéaire en une adresse physique
Table des pages à 2 niveaux
66
LE PENTIUM D'INTEL (5)
Le mécanisme de protection du Pentium




Les deux bits de protection se trouvent dans le PSW (Program Status Word)
On ne peut pas faire appel à une procédure d’un niveau inférieur
On doit fournir un sélecteur appelé call gate qui donne l’adresse de la
procédure à appeler
Seul les points d’entrée officiels peuvent être utilisés
67
QUELQUES APPELS SYSTÈME SOUS UNIX

brk, sbrk: permet de modifier dynamiquement la quantité
d’espace mémoire utilisée

getrlimit: retourne la taille maximale que peut avoir le segment
de données

mmap : établi un mappage entre un espace mémoire et un
fichier ou une mémoire partagée.

munmap : libère l’espace mémoire alloué par mmap

mlock : Pour verrouiller des pages en mémoire

munlock : Pour déverrouller des pages
68
QUELQUES APPELS SYSTÈME SOUS
WINDOWS

VirtualAlloc: Similaire à malloc (la mémoire est allouée en
pages)

VirtualFree: Similaire à free

VirtualLock : Similaire à mlock.

VirtualUnock : Similaire à munlock.

MapViewOfFile : Similaire à mmap

UnmapViewOfFile : Similaire à munmap
69