Title: Gestion de la m
1Gestion 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
2Gestion de la mémoire
- Idéalement, on voudrait que la mémoire soit
- grande
- rapide
- non volatile
- bon marché
- Hiérarchie de la mémoire
- 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
3Gestion élémentaire de la mémoireMonoprogrammatio
n 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)
4Multiprogrammation 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
5Modélisation de la multiprogrammation
- La multiprogrammation permet daugmenter
lutilisation du CPU - p fraction du temps passé à attendre la fin
dune E/S - Taux d'utilisation du CPU ( 1-pn ) en fonction du
nombre de processus en mémoire.
6Analyse dun système de traitement par lot
- Temps d'arrivé et travail pour 4 tâches
- Taux d'utilisation du CPU avec 80 d'entrée/sortie
7Analyse dun système de traitement par lot
- 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)
8Réallocation et protection
- On ne peut pas prévoir où en mémoire un programme
sera chargé - Les adresses ne peuvent pas être absolues
- Un programme ne doit pas adresser l'espace d'un
autre - 2 solutions
- 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.
9Le va-et-vient (1)
- Il nest pas rare davoir entre 40 et 60
processus de lancés au démarrage dune 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 lespace pour y
introduire un autre processus (nouvellement créé
ou ayant préalablement été déplacer vers le
disque).
10Le 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
11Le va-et-vient (3)
- 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
12Gérer la mémoire (1)
- Utilisation dune table de bits
-
- La mémoire est divisée en unités dallocation
dont la taille peut varier de quelques mots à
plusieurs kilo-octets - Une table de bits est utilisée pour indiquer si
une unité dallocation est libre ou non. - La taille de la table dépend de
- La taille de la mémoire
- La taille des unités dallocation
- Avantage simplicité
- Inconvénient La recherche dun espace de k
unités libres est une opération lente.
13Gérer la mémoire (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, TTrou), ladresse 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).
14Gérer la mémoire (3)
- Une partie de la mémoire avec 5 processus, 3
trous - 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
15Gérer la mémoire avec une liste chaînée
Lorsquun 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.
16Algorithmes dallocation de la mémoire
- Première zone libre (first fit)
- On trouve le premier trou suffisamment grand pour
contenir le processus. - Le trou est ensuite divisé en deux parties une
pour le processus et lautre pour la mémoire
inutilisée. -
- Zone libre suivante (next fit)
- Identique à lalgorithme précédent sant que la
recherche commence au dernier espace libre
trouvé. - Les performance sont légèrement meilleures
17Algorithmes dallocation de la mémoire
- Meilleur ajustement (best fit)
- 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
nest pas meilleure que la précédente.
18Algorithmes dallocation 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
- Si la liste des trous est triée par taille alors
best-fit et first-fit sont essentiellement
équivalents. - Ralentissement quand la mémoire est libérée
- 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.
19Algorithmes dallocation de la mémoire
- 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.
20Mémoire virtuelle (1)
- Solution au problème des programmes trop gros
pour entrer en mémoire. - Chaque programme possède son propre espace
dadressage découpé en petite entités appelées
pages. - Cet espace dadressage représente une mémoire
virtuelle qui peut être plus grande que la
mémoire physique. - Chaque page est une suite dadresses 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.
21Mémoire virtuelle (2)
- Il nest pas nécessaire davoir 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
ny 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 ladresse physique de
celles-ci. - Le tout est géré de façon transparente par l
unité de gestion de la mémoire (MMU)
22La pagination (1)
- Localisation et fonction du MMU
23La pagination (2)
- La relation entre les adresses virtuelles et
physiques est indiquée dans la table des pages - Dans lexemple, un ordinateur peut produire des
adresses sur 16bits (64 Ko) mais il ny 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)
24La pagination (3)
- Par exemple,
- Ladresse virtuelle 0 est transformée en adresse
physique 819224096 - Ladresse virtuelle 819224096 est transformée
en adresse physique 2457664096 - Ladresse virtuelle 205005409620 est
transformée en adresse physique 123082409620
25La pagination (4)
- Sur les systèmes Unix on peut obtenir la taille
des pages à laide de la commande pagesize - Sur sunensdev la taille des page est de 8Ko
- Sur Mac OS X la taille des pages est de 4Ko
26Table des pages (1)
- Fonctionnement interne du MMU avec 16 pages de 4Ko
27Table des pages (2)
- Deux problèmes
- La table des pages peut être très grande
- 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.
28Table 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
nest pas nécessaire de sauverager sur le disque.
Lors dune é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 dE/S (on
veut accéder aux données du périphérique plutôt
quà la cache
29Suite la semaine prochaine
30Table des pages multiniveaux
- Adresse 32 bits avec 2 champs de table des pages
- Table des pages à deux niveaux
31TLBs 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
32Tables 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
33Algorithmes de remplacement de pages
- Une faute de page force le SE à choisir
- quelle page doit être enlevée
- faire de la place pour la nouvelle page
- Les pages modifiées doivent d'abord être
sauvegardées - 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
34L'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.
35Algorithme de remplacement de la page non
récemment utilisée (NRU)
- Chaque page possède deux bits R et M
- ces bits sont mis à 1 lorsque la page est
référencée ou modifiée (le bit R est remis à 0
périodiquement). - 4 classes de pages
- 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
36Algorithme 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.
37Algorithme 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.
38Algorithme de l'horloge
Comme l'algorithme précédent mais l'utilisation
d'une liste circulaire évite de déplacer les
pages.
39Algorithme 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 - on enlève les pages qui n'on pas été utilisées
depuis longtemps - Tenir à jour une liste chaînée de pages
- 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
40Algorithme 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
41Exemple
Référence des pages 0,1,2,3,2,1,0,3,2,3
42Algorithme 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
43Algorithme 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
lexemple précédent. - Les compteurs ont un nombre limité de bits
- On ne peut pas distinguer deux pages dont tous
les bits sont à 0
44L'algorithme de l' ensemble de travail
- Pagination à la demande (demand paging) Les
processus sont lancés sans quaucune page ne soit
en mémoire. Cela résulte en un grand nombre de
fautes de pages en début dexécution. -
- Le chargement des pages avant lexé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 - Lensemble 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 dhorloge. - Au démarrage dun processus, un ensemble de
travail quelconque peut être sélectionné - Par exemple, la page contenant la fonction main
dun programme C devrait faire partie de
lensemble de travail initial.
45L'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 lensemble de travail - Pour chacune des entrées
- Si le bit R vaut 1
- La page fait partie de lensemble 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 AgeTVC-TDU
- Si Age gt t alors la page est enlevée de
lensemble de travail - Sinon la page demeure dans lensemble de travail
- La page la plus âgée qui ne fait pas partie de
lensemble de travail est enlevé - Si toutes les pages font partie de lensemble de
travail alors on enlève la page la plus âgée
dont le bit R vaut 0 - Si une telle page nexiste pas, on enlève une
page quelconque (de préférence une qui na pas
été modifiée).
46L'algorithme de l' ensemble de travail
47L'algorithme WSClock(Working Set Clock)
- Utilise lalgorithme de lhorloge et les
informations de lensemble de travail - Liste circulaire initialement vide
- Lexemple suivant indique se qui se passe
lorsque le bit R vaut 1
48L'algorithme WSClock
- Si le bit R vaut 0 alors
- Si Age gt t et que le clean bit M vaut 0 alors on
peut remplacer la page - Si Age gt t et M 1 alors
- Lécriture de la page sur le disque est
ordonnancée - En attendant on poursuit la recherche dune page
à remplacer
49Ré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é
50Suite la semaine prochaine
51Anomalie 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
52Segmentation (1)
- Comment libérer le programmeur de la gestion de
laccroissement et de la diminution des tables? - Un solution consiste à doter la machine de
plusieurs espaces dadresses indépendants appelés
segments. - Une adresse est constituée de deux parties
- ltsegment, déplacementgt
- Mémoire logique Mémoire virtuelle segmentée
- Mémoire linéaire mémoire virtuelle paginée
53Segmentation (0)
- Dans un espace d'adressage à une dimension, une
table des pages qui croît peut en chevaucher une
autre.
54Segmentation (3)
- Une mémoire segmentée permet à chaque table de
croître ou de diminuer indépendamment des autres. - Exemple compilateur
55Segmentation (4)
Considérations Pagination Segmentation
Le programmeur doit-il connaître la techique utilisée? Non Oui
Combien y a-t-il d'espaces d'adressage linéaires? 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
Comparaison entre la segmentation et la pagination
56Segmentation (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.
57Implémentation de la segmentation pure
- (a)--(d) Dévelopement de la fragmentation externe
(phénomène du damier) - (e) Compactage
58Segmentation 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
59Segmentation 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. - Ladresse des segments sur le disque se trouvent
dans une autre table.
60Segmentation avec pagination MULTICS (3)
- Chaque segment est un espace dadressage 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
61Segmentation avec pagination MULTICS (4)
- Conversion d'une adresse virtuelle MULTICS en une
adresse réelle
62Segmentation 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
63Segmentation avec paginationLe 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
2213 segments 230 mots de 32 bits par segment
64Le 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 ladresse 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
65Le 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.
66Le Pentium d'Intel (4)
- Mappage d'une adresse linéaire en une adresse
physique - Table des pages à 2 niveaux
67Le 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 dun
niveau inférieur - On doit fournir un sélecteur appelé call gate
qui donne ladresse de la procédure à appeler - Seul les points dentrée officiels peuvent être
utilisés
68Quelques appels système sous unix
- brk, sbrk permet de modifier dynamiquement la
quantité despace 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 lespace mémoire alloué par mmap
- mlock Pour verrouiller des pages en mémoire
- munlock Pour déverrouller des pages
69Quelques 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