Title: Chapitre 10: 2
1Chapitre 10 2ème partie
Gestion de la mémoire virtuelle
2Allocation de cadres MP
- Pour exécuter, un processus a besoin dun nombre
minimal de cadres de MP - par exemple, quelques instructions pourraient
avoir besoin de plusieurs pages simultanément
pour exécuter! - Il est aussi facile de voir quun proc qui reçoit
très peu de MP subira un nombre excessif de
défauts de pagination, donc il sera excessivement
ralenti - Comment sassurer quun proc soit alloué son
minimum - allocation égale chaque processus a droit a une
portion égale de la mémoire physique - allocation proportionnelle chaque processus a
droit à une portion proportionnelle à sa taille - le critère devrait plutôt être le besoin de
pages v. working set
http//w3.uqo.ca/luigi/
3Plusieurs critères possibles
- Allocation égale chaque processus a droit à une
portion égale de la mémoire physique - Probablement pas une bonne idée
- Chaque processus a droit à une portion
proportionnelle à sa taille - Aussi pas une bonne idée car des grands processus
pourraient ne pas avoir besoin de beaucoup de
mémoire - Mieux chaque processus a droit à une portion
proportionnelle à ses besoins - Comment déterminer les bsns?
- Voilà le concept de Working Set qui aide vers ce
but
4Allocation globale ou locale
- Globale la victimeest prise de nimporte quel
processus - Locale la victimeest prise du processus qui a
besoin du cadre - Lallocation globale peut mieux optimiser la
performance globale dun système, - Pouvant prendre en considération les besoins de
tous les processus actifs - Et donc elle est celle qui est normalement
utilisée
5Lécroulement et lensemble de travail
6Écroulement ou thrashing (liter. défaite)
- Un proc qui na pas assez de MP finira par passer
trop de temps dans les files dattente - Si cette situation se généralise à plusieurs
procs, lUCT se trouvera à être sous-utilisée - Le SE pourra chercher de remédier à cette
situation en augmentant le niveau de
multiprogrammation - plus de procs en mémoire!
- moins de mém par proc!
- plus de défauts de pagination!
- Désastre écroulement
- le système devient entièrement occupé à faire des
E/S de pages, il ne réussit plus à faire de
travail utile
7La raison de lécroulement
- Chaque processus a besoin d un certain nombre de
pages en MP pour exécuter efficacement - Le nombre de pages dont lensemble de processus a
besoin à linstant excède le nombre de cadres de
MP disponible - il faut prendre la bonne décision au point
- Ne pas augmenter le niveau de multiprogrammation
8Ensemble de travail (working set)
- Lensemble de travail dun proc donné à un moment
dexécution donné est lensemble des pages dont
le proc a besoin pour exécuter sans trop de
défauts de pagination - Malheureusement, un concept théorique et flou
9Comportement typique dun processus
- Au début, un processus occasionnera un certain
nombre de fautes de pagination pour charger
toutes les pages dont il a besoin à ce moment là
(son ensemble de travail initial) - Il travaillera un peu sur ces pages, puis il
passera à faire autres choses - Il aura donc besoin de charger dautres pages
- Il travaillera sur ces pages, etc.
10Exemple 1
- Chargement dune page web
- Consultation de la page chargée
- Chargement dune autre page web
- Consultation de la page chargée
- Etc.
11Exemple 2
- Vous faites du traitement du texte
- Le programme Word et votre texte doivent être
amenés en MP - Mais puis si vous restez dans le même travail,
tout est déjà en MP - Vous passez à faire du tablier
- Le programme Excel et les données doivent être
amenés en MP - Mais puis si vous restez dans le même travail
tout sera déjà en MP
12Chercher à prévoir les demandes de pages sur la
base des demandes passées
- Fixer un intervalle D
- Les pages intéressées par les dernières D
operations de mémoire sont dans lensemble de
travail déterminé par D
Chaîne de réf.
D 10 opér
D 4 donnerait le même résultat pour t2!
13Modèle de lensemble de travail
- D une fenêtre densemble de travail
- un nombre fixe de réf. de pages
- p.ex. 10 000 opérations de mémoire
- SI trop petit, il contiendra pas tout lensemble
de pages couramment utilisées - Si trop grand, il contiendra plusieurs ensembles
de pages - WSSi (ensemble de travail du proc. i)
- D ? WSSi nombre total de cadres demandés par
tous les procs en exéc - Si D gt MP ? Risque décroulement
- Sassurer que ceci ne se vérifie pas
- si nécessaire, suspendre un des processus
- Problème choisir un bon D
- peut être fait par le gérant du système
14Implémentation du concept de WS difficile!
- Minuterie et bits référence
- Bit de référence sur chaque cadre qui est mis à 1
chaque fois que la page dans le cadre est
utilisée - Minuterie qui interrompt régulièrement pour voir
les pages qui ont été utilisées dans un
intervalle de temps - Idée semblable à lalgo. de lhorloge
15Le concept de WS en pratique
- Deux types de difficultés
- fixer le D de façon différente pour chaque
processus, pour représenter ses besoins - Du matériel spécial est nécessaire pour suivre le
WS dun proc à un moment donné - Voyons une approche plus pratique ?
16Analogie
- Un client demande un plat qui consiste en
plusieurs assiettes - Le garçon lui donne une grande table
- Un client demande un plat qui consiste en une
seule assiette - Le garçon lui donne une petite table
- Cest plus difficile quand la demande évolue dans
le temps! - Dans ce cas, il faut adapter la dimension de la
table au fur et à mesure
17Pour chaque processus, il existe une dimension de
MP acceptable
ceci suggère une approche plus pratique
acceptable
18Une méthode plus facile à implanter que WS
- Le SE ou le gérant du système détermine quelles
sont les nombres de défauts de pagination
maximales et minimales tolérables dans le
système, et pour chaque travail, selon ses
caractéristiques - Si un travail en produit plus que sa juste
partie, lui donner plus de MP - Si un travail en produit moins, lui donner moins
de MP - Suspendre si possible des travaux quon ne peut
pas satisfaire - Ou amorcer dautres travaux si les ressources
sont disponibles
19Optimisations
20Optimisations
- Un grand nombre de techniques doptimisation ont
été proposées et implantées - Le manuel en discute plusieurs
- Prépagination, post-nettoyage
- Stockage efficace
- Taille optimale des pages
211) Prépagination, post-nettoyage
- Prépagination
- noter quelles pages paraissent être reliées les
unes aux autres - quand une de ces pages est amenée en mémoire RAM,
y amener les autres en même temps - ne pas amener une seule page, sil ny a pas
assez d espace pour les autres - éventuellement, stocker toutes ces pages dans des
secteurs contigus de disque, de façon qu elles
puissent être lues rapidement en séquence - Post-nettoyage (post-purging)
- enlever ensemble tout un groupe de pages reliées
(même localité)
222) Stocker les pages de façon efficace
Si la MS est sur disque
233) Tailles de pages (un pb de conception matériel)
- Grande variété de tailles de pages aujourdhui
- en pratique de 4KB à 4MB
- Avantages des petites pages
- moins de fragmentation interne
- moins dinformation inutile en mémoire
- Avantages des grandes pages
- tableaux de pages plus petits
- si la MS est sur disque, le temps de disque le
plus important est le temps de positionnement - une fois le disque positionné, il vaut la peine
de lire une grande page - Tendance aujourdhui vers grandes pages car nous
avons des grands MPs
24Pages grandes ou petites
- Avec une petite taille
- grand nombre de pages en MP
- chaque page contient uniquement du code utilisé
- moins de fragm. interne et externe
- peu de défauts de page une fois que toutes les
pages utiles sont chargées - tableaux de pages plus grands
- En augmentant la taille
- moins de pages peuvent être gardées dans MP
- chaque page contient plus de code qui nest pas
utilisé - plus de fragmentation
- plus de défauts de page
- tableaux de pages moins grands
- Les défauts de pages diminuent lorsque nous
approchons le point P où la taille dune page est
celle dun processus entier
Stallings
25Différentes tailles de pages
- Certains processeurs supportent plusieurs
tailles. Ex - R4000 supporte 7 tailles 4KB à 16MB
- Aujourdhui il y a des UCT qui admettent des
tailles de pages jusquà 1G - dimensions différentes peuvent être en
utilisation par des travaux différents, selon
leur caractéristiques de localité - Travaux qui utilisent des grosses boucles et
grosses structures de données pourront utiliser
bien les grosses pages - Des travaux qui sautent un peu partout sont
dans la situation contraire - LUCT (ou MMU) contient un registre qui dit la
taille de page couramment utilisée - Pour en savoir plus
- Consultez Page (computer memory) dans
Wikipedia
26Effets de lorganisation du programme sur
lefficacité de la pagination
- En principe, la pagination est censée être
invisible au programmeur - Mais le programmeur peut en voir les conséquences
en termes de dégradation de performance - p.ex. quand il change d un contexte à lautre
- Le programmeur peut chercher à éviter la
dégradation en cherchant daugmenter la localité
des références dans son programme
27Effets de lorganisation du programme sur
lefficacité de la pagination
- Supposons que un compilateur organise les
tableaux en mémoire par lignes - Mais que un programme le balaie par colonnes
- Dans une mémoire non-paginée
- aucune inconvénient observable
- Mais dans une mémoire paginée
- Inefficacité si le tableau est gros, p.ex. si
chaque ligne est sur une page différente
28Col 2
Col 1
Col 3
ligne 1 page 1
Tableau organisé par lignes, balayage par colonnes
ligne 2 page 2
ligne 3 page 3
Fautes de pagination répétées
Mém logique dun proc.
Chap 10
29Col 2
Col 1
Col 3
ligne 1 page 1
Tableau organisé par lignes, balayage par lignes
ligne 2 page 2
ligne 3 page 3
Fautes de pagination minimales
Mém logique dun proc.
30Effets de lorganisation du programme sur
lefficacité de la pagination
- Structure de programme
- Array A1024, 1024
- chaque ligne du tableau est stockée dans une page
différente, - un cadre différent
- Programme 1 balayage par colonnes
- for j 1 to 1024 do for i 1 to 1024
do Ai,j 0jusquà 1024 x 1024 défauts de
pagination - Programme 2 balayage par lignes
- for i 1 to 1024 do for j 1 to 1024
do Ai,j 0jusquà 1024 défauts de
pagination
31Expérience pratique (article paru en 2010)
- Un serveur web roulait sur 12 machines et les
gardait très occupées - Un programmeur astucieux sest aperçu que
lalgorithme utilisé faisait accès à des données
qui à chaque fois étaient fort probablement dans
des pages différentes - Il a utilisé un algorithme théoriquement moins
optimal mais qui utilisait mieux la localité - Le matériel a pu être réduit à 3 machines!
Kamp, P.H. Youre doing it wrong. Comm. ACM
53(7), 2010, 55-59.
32Les rectangles blancs représentent les pages
Binary Heap (théoriq. optimal sans
pagination) Mauvaise structure les parcours dans
les arbres touchent à des pages
différentes (p.ex. 6 accès de pages pour aller de
32 à 47, 4 pages différentes)
B-Heap (théoriq. moins bon) Mieux Les parcours
dans les arbres restent souvent dans la même
page (p.ex. 3 accès de pages pour aller de 32 à
47, 3 pages différentes)
33Verrouillage de pages en mémoire
- Certaines pages doivent être verrouillées en
mémoire, p.ex. celles qui contiennent le noyau du
SE - Il est aussi essentiel de verrouiller en mémoire
des pages sur lesquelles il y a exécution d E/S - Ceci peut être obtenu avec un bit verrou sur le
cadre de mémoire - ce bit veut dire que ce cadre ne peut pas être
sélectionné comme victime
34Systèmes en temps réel
- Avec la mémoire virtuelle, les temps dexécution
dun processus deviennent moins prévisibles - retards inattendus à cause de la pagination
- Donc les systèmes en temps réel durs utilisent
peu ou point la mémoire virtuelle
35En pratique
36Combinaison de techniques
- Les SE réels utilisent les techniques que nous
avons étudiées en combinaison, e.g. - Linux utilise le buddy system en combinaison avec
la pagination (la plus petite portion de mémoire
allouable est une page) - dautres systèmes utilisent les partitions fixes
avec la pagination, ce qui peut être fait de
plusieurs façons - diviser la mémoire réelle en partitions fixes,
assigner chaque partition à un ou plusieurs
processus, puis paginer un processus dans la
partitions qui lui a été assignée - diviser la mémoire virtuelle en partitions,
assigner chaque partition à un ou plus.
processus, puis utiliser la technique appropriée
pour chaque processus dans sa partition - Les SE réels sont complexes et variés, mais les
principes étudiés dans ce cours en constituent la
base.
37Conclusions 1
- Il est fortement désirable que lespace
d adressage de lusager puisse être beaucoup
plus grand que l espace d adressage de la
mémoire RAM - Le programmeur sera donc libéré de la
préoccupation de gérer son occupation de mémoire - cependant, il devra chercher à maximiser la
localité de son processus - La mémoire virtuelle aussi permet à plus de
processus d être en exécution - UCT, E/S plus occupées
38Conclusions 2
- Le problème de décider la page victime nest pas
facile. - Les meilleurs algorithmes sont impossibles ou
difficiles à implanter - On voit ici beaucoup de complexité dans les
systèmes réels
39Conclusions 3
- Il faut sassurer que chaque processus ait assez
de pages en mémoire physique pour exécuter
efficacement - Sinon risque décroulement
- Le modèle de lensemble de travail exprime bien
les exigences, cependant il est difficile à
implanter - Solution plus pragmatique, où on décide de donner
ou - de mémoire aux processus selon leur débit
de défauts de pagination - Àfin que ces mécanismes de gestion mémoire soient
efficaces, plusieurs types de mécanismes sont
désirables dans le matériel
40Dans un système réel
- Une lecture disque rotationnel sur un PC prend
autour de - 10ms
- Donc la limite est autour de 100 fautes de
pagination par seconde - Dans un serveur avec mémoire secondaire
éléctronique (p.ex. SSD) - le taux de pagination peut arriver à milliers de
pages par seconde - Le temps dexécution dune seule faute de
pagination peut être comparable au temps
dexécution dentre 10 et 100 millions
dinstructions régulières - Mais ces données varient beaucoup dordi à ordi
41Concepts importants du Chap. 10
- Localité des références
- Mémoire virtuelle implémentée par va-et-vient des
pages, mécanismes, défauts de pages - Adresses physiques et adresses logiques
- Temps moyen daccès à la mémoire
- Récriture ou non de pages sur mém secondaire
- Algorithmes de remplacement pages
- OPT, LRU, FIFO, Horloge
- Fonctionnement, comparaison
- Écroulement, causes
- Ensemble de travail (working set)
- Relation entre la mémoire allouée à un proc et le
nombre dinterruptions - Relation entre la dimension de pages et les
défauts de pages - Prépagination, post-nettoyage
- Effets de lorganisation dun programme sur
lefficacité de la pagination
42Par rapport au manuel
- Sections 10.3, 10.4.7, 10.4.8, 10.5,10.7
intéressantes, mais pas sujet dexamen
43Recherche récente
- Un article de 2010 présente un système dans
lequel on a implémenté trois mécanismes pour
sauver de la mémoire - Partage de pages comme nous avons vu.
- 'Patching' ceci est pour des pages qui sont
différentes seulement dans certains aspects. Ces
pages sont trouvées et on crée une page typique,
plus des courtes 'patches' qui donnent la
différence entre la page typique et les pages
semblables. - Compression les pages pas récemment utilisées
sont comprimées et peuvent être transférées sur
disque plus tard. - Lalgorithme de remplacement pages utilisé est
essentiellement l horloge - Tout ceci paraît très exigeant pour les
ressources de l'UCT (comparaisons, compression
...), mais n'oublions pas que l'UCT est souvent
peu occupée. - D. Gupta, S. Lee, M. Vrable, S. Savage, A.C.
Snoeren, G. Varghese, G.M. Voelker, A. Vahdat
Difference Engine Harnessing Memory Redundancy
in Virtual Machines. Comm. ACM, 53 (10) 85-93
44Un peu dhistoire
- Le concept de régistre de base fut inventé
pendant les années 1950 et fut le premier pas
vers lindépendence entre mémoire logique et
mémoire physique - 1959 système Manchester Atlas invente le concept
de mémoire virtuelle. Implémente la pagination et
la mémoire associative TLB. - 1964 Burroughs B5500 implémente la
segmentation. - 1964 Système Multics, collaboration entre
General Electric et Massachusetts Institute of
Technology, implémente dans le système GE645 une
mémoire virtuelle qui combine la pagination et la
segmentation. - 1969 Une équipe dIBM (David Sayre) prouve que
le concept de mémoire virtuelle est effectivement
plus performant que les méthodes implémentées
manuellement comme les overlays. Ceci fut fait
en étudiant la performance de programmes réels
utilisant les deux méthodes. - La segmentation ne fut pas implantée dans Unix ni
Windows, en raison des moyens limités des
premiers PC (Unix voulait être une version
simplifiée et plus pratique de Multics) - Aujourdhui, larchitecture Intel supporte tant
la segmentation que la pagination, mais la
segmentation comme décrite avant continue de ne
pas être implantée dans les systèmes comme Unix,
Linux ou Windows - (Dommage).
45Pentium segmentation paging (notes de cours par
Dave Reed, Creighton U)
- segmentation
- max segment size 4 GB
- max of segments per process 16 KB
- logical address is 48 bits long
- 16-bit selector identifies the segment
- 32-bit offset specifies location in segment
- paging
- page size 4 KB or 4MB
- utilizes 2-level paging scheme
- first 10 bits index a page directory
- next 10 bits index corresponding page table
- remaining 12 bits specify offset in page
46Linux on Pentium Systems
- since some processors don't support segmentation,
Linux doesn't rely on it - on the Pentium, Linux uses only 6 segments
- kernel code, kernel data, user code, user data,
task-state, local-descriptor table - since some processors support 64-bit addresses,
2-level paging is not sufficient - in general, Linux uses 3-level paging
- but uses 0 bits for middle table if only 32-bits
are supported (as with Pentium)