Gestion de la mémoireycaniou/Teaching/1516/L3/cm5-memoire_P.pdf · Gestion de la m emoire Fabien...
Transcript of Gestion de la mémoireycaniou/Teaching/1516/L3/cm5-memoire_P.pdf · Gestion de la m emoire Fabien...
Gestion de la memoire
Fabien Rico
Univ. Claude Bernard Lyon 1
seance 3
Fabien Rico [email protected] CM+ TD + TPDaniel Balouek [email protected] TD + TP
Leo Le Taro [email protected] TD + TPYves Caniou [email protected] TP
Laurent Tevenoux [email protected] TP
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 1 / 1
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 2 / 1
Introduction
A quoi sert la memoire ?
Stocker le code du programme
Stocker le code des fonctions partagees
Stocker les variables globales (Tas)
Stocker les variables locales (Pile)
Une donnee pour pouvoir etre traitee doit etre dans un registre duprocesseur.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 3 / 1
Introduction
Hierarchie des memoires
CPU
Vit
esse T
aille
Registres1ns < 1Ko
Caches L1, L2,. . .2ns 4Mo
Memoire RAM10ns ' 4Go
Disque10ms ' 1To
CD-ROM, CD reinscriptible, cartouche
magnetique, le reseau!, etc . . .' 1s ∞
Compilateur
Materiel
Systeme
Systeme
Logiciel &
Systeme
Principe de localite : Les programmes tendent a utiliser des instructionset des donnees accedees dans le passe (localite temporelle) ou proches decelle-ci (localite spatiale)
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 4 / 1
Introduction
Cercle vertueux ?
Les programmeurs suivent naturellement le principe de localite.
Donc ceux qui concoivent les systemes s’en apercoivent et l’utilise(mecanismes de pages, overlay...).
Donc pour garder de bonnes performances les programmeurs suiventce principe.
Donc ceux qui concoivent les processeurs l’utilisent (pipeline, cachememoire...)
Donc optimiser un code revient souvent a ameliorer sa localite
...
Ce principe prend de plus en plus d’importance.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 5 / 1
Introduction
Problemes a resoudreAllocation
Trouver de la place lorsque un processus demande de la memoire, a priori la memoirefournie doit etre contigue.
Liberation
Lorsqu’un processus se termine ou libere de la memoire, elle si doit etre disponiblepour les autres. Il faut etre capable de rassembler les zones libres contigues.
Liaison
Un processus qui utilise une variable ou une adresse virtuelle doit etre capable deretrouver la donnee dans la memoire physique.
Protection
Isolation un processus utilisateur ne doit pouvoir modifier que ses propressegments memoire, seul le mode noyaux permet de modifier n’importe quel casememoire.Segmentation les segments de memoire n’ont pas tous le meme role (code,donnee, constante,...) deborder d’un segment doit generer un deroutement versle systeme.
.Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 6 / 1
Introduction Liaison/Isolation
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 7 / 1
Introduction Liaison/Isolation
Adresse memoire
Dans mon exemple, si je lance 2 fois le meme programme fonction .c :
l’adresse de la fonction est toujours la meme ;
l’adresse de la variable locale r2 est toujours la meme (depend dupointeur de pile) ;
l’adresse de la variable globale r1 est toujours la meme (depend dupointeur d’instruction).
? Est-ce etonnant ? Comment cela est-il possible ?
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 8 / 1
Introduction Liaison/Isolation
Historique pour la liaison - I
Comment faire la correspondance entre une adresse logique dans unprogramme et une adresse physique ? Comment isoler les processus ?
liaison fixe : a la compilation, adresse physique = adresse logique
liaison translatable :I absolue : au chargement, modification du codeI relative : dynamiquement, lors de l’execution, calcul des adresses
physiques par addition de la valeur d’un registre (dit de base) ou d’uneentree de tableau (table des segments).
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 9 / 1
Introduction Liaison/Isolation
Historique pour la liaison - II
Segmentation : Une adresse est decomposee en 2, Segment:Offset.L’adresse lineaire est formee :
I De l’adresse logique = offsetI De l’adresse du segment lue dans une table en fonction de la valeur
d’un registre de segment (cs, ds, ss, es).
virtuel : programme dans un espace virtuel, adresse physique calculeedynamiquement a l’execution.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 10 / 1
Introduction Liaison/Isolation
Generalite sur la memoire : decoupage dans un programme
La memoire d’un ordinateur est forcement organisee en differentes parties :
limites physiques : ZONE DMA, ZONE NORMAL, ZONE HIGHMEM,
par nature : code, donnees, piles
par privilege : zone noyau ou utilisateur
par l’utilisation : dans le temps, phases d’un programme
⇒ Notion de segment : adressage segmente, toutes les adresses n’ontpas le meme role (origine des erreurs de segmentation).
⇒ Notion de zone (memory area) : adressage virtuel, l’adresse manipuleepar le programme n’est pas celle de la memoire physique.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 11 / 1
Introduction Liaison/Isolation
Interet de la segmentation
Cela permet d’organiser la memoire :I un segment a un role precis ;I un segment appartient a un processus ;I un segment peut etre partage (bibliotheque partagee, pipe, ...).
Cela simplifie l’adressage :I adresse du segment, decalage dans le segment ;I possibilite de deplacer facilement le segment.
Gestion de plusieurs processus :I partie de la memoire reservee au systeme ;I possibilite de liberer la memoire non utilisee ;I possibilite de supprimer un processus de la memoire.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 12 / 1
Introduction Allocation/Liberation
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 13 / 1
Introduction Allocation/Liberation
Allocation memoire
Le probleme
Etant donne une memoire (adresse de 0 a N), comment satisfaire aumieux des demandes Di de taille 0 < si et de liberations Li ?
Comment allouer/des-allouer un nouveau segment ? Fusionner lessegments libres contigus
Unite d’allocation : en theorie c’est l’octet, en pratique c’est plus (noctets, pages ...)
Fragmentation interne : espace inutilise dans une zone allouee
Fragmentation externe : trou entre deux zones occupees
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 14 / 1
Introduction Allocation/Liberation
Fragmentation
pour corriger la fragmentation externe
Compactage : en consequence de la fragmentation externe, uncompactage peut etre necessaire
- sur place : recopie en memoire des zones allouees pourrassembler les trous ⇒ translation dynamique- par va-et-vient (swap) : recopie en memoire secondairede zones allouees et rechargement demande.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 15 / 1
Introduction Allocation/Liberation
Historique
Monoprogrammation : Au minimum separation en 3 : systeme,pilotes de peripheriques, processus en cours.
Zones de recouvrement : overlays, un processus est divise en unezone permanente et des � overlays � interchangeables (temps reel eten embarque).
Partitions fixes : la memoire est predecoupee en segments, unprocessus qui demande de la memoire obtient un de ces segmentsdont la taille est superieure a la demande (fragmentation interne).
Partitions variables : on fournit au processus un segment de lataille voulue lorsqu’il en fait la demande, mais les liberations aleatoiregenerent des zones libre morcellees (fragmentation interne).
Pagination : la memoire est decoupee en pages (' des segments depetite taille fixe), lorsqu’il fait la demande d’une zone de la memoire,un processus recoit suffisamment de pages pour couvrir ses besoins,mais ces pages ne sont pas forcement contigues. On utilise l’adressagevirtuel pour que la zone semble contigue au processus.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 16 / 1
Introduction Allocation/Liberation
Algorithmes d’allocation
Reposent sur le chaınage des zones libres :I First fit : la premiere zone possible trouveeI Worst fit : “pire ajustement”, la zone de plus grande tailleI Best fit : “meilleur ajustement”, c’est a dire la zone de taille la plus
procheI adaptation : VMS,
Demande taille partition algorithmeGrande variable worst fitMoyenne variable best fitPetite fixe first fit
I sensible a la fragmentation externe
http://thumbsup2life.blogspot.fr/2011/02/best-fit-first-fit-and-worst-fit-memory.html
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 17 / 1
Introduction Allocation/Liberation
Algorithmes d’allocation
Reposent sur la subdivisionI binaire : buddy system ou � systeme du compagnon �,
F On manipule des blocs de taille 2k rassembles par taille.F Lorsqu’il faut un nouveau bloc de taille 2k et qu’il n’y en a pas on casse
un bloc de taille 2k+1 en 2 blocs compagnonsF Lorsqu’on libere un bloc, si son compagnon est libre, on les fusionne.
I Generalise : suite de FibbonacciI sensible a la fragmentation interne
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 18 / 1
Introduction Allocation/Liberation
Algorithmes d’allocation
PaginationI Il est plus facile d’utiliser des partitions de tailles fixes : l’espace
memoire (virtuel) est decoupe en pages qui sont placees ou non enmemoire physique.
I Lorsqu’un processus demande de la memoire, il obtient un nombresuffisant de pages pour couvrir la demande.
F Mais ces pages sont dispersees dans la memoire.F Il faut etre capable de retrouver la localisation.F Il faut que la memoire obtenue semble contigue au processus.
I Repose sur une fonction de traduction
f : adresse logique 7→ adresse physique
I Importance de f .
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 19 / 1
Introduction Allocation/Liberation
Conclusion
La pagination a beaucoup d’avantage
Peu de fragmentation interne
La fragmentation externe n’est pas importante
L’adressage est virtuel :I isolationI liaison simplifiee
Attention cependant
Besoin de stocker les positions des pages dans la memoire
Cout de la fonction de traduction
Actuellement, un ordinateur de bureau utilise la pagination segmentee. Lessegments sont conserves pour gerer les roles, les partages ... ils sontcontigue en memoire virtuel mais sont decoupes en pages memoire.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 20 / 1
Memoire virtuelle
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 21 / 1
Memoire virtuelle
Memoire virtuelle
Idee : le processeur travaille avec des adresses memoires sans rapportavec les adresses physiques.
Capacite d’adressage : l’ensemble des adresses que l’on peut coder,par ex. 4Go sur un processeur 32 bits (0x00000000 - 0xFFFFFFFF),16Eo pour un 64 bits.
Espace d’adressage : partie utilisable par le processus.
L’espace d’adressage est partitionne en segments dependant dusysteme d’exploitation.
A chaque lecture memoire, l’adresse physique est calculee.
Ce calcul permet de faire des verifications supplementaires :I presence effective de l’adresse en memoire ;I droits.
Il faut un materiel dedie la Memomy Management Unit.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 22 / 1
Memoire virtuelle
Espace d’adressage d’un processus
Linux
4 Gi
3 Gi
0x00000000
0xC0000000
0xFFFFFFFF
Code
Tas
Pile
Zo
ne
Noy
au
Zo
ne
Uti
lisa
teu
r
Windows Vista
4 Gi
2 Gi
Interdit
Interdit
Code et donneesdu programme
Donnees systeme
HAL + SE
Table des pages,...
Pile, donnees,... Zo
ne
Noy
au
Zo
ne
Uti
lisa
teu
r
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 23 / 1
Memoire virtuelle Pagination
Niveau d’indirection
Comment faire la correspondance par exemple sur un processeur 32 bits
La MMU utilise une table de correspondance @ logique 7→ @ physique
La table est stockee en memoire
Si on stocke tout, 232 @ a conserver
⇒ On rassemble les adresses en pages (par ex. 4096 octets)
⇒ 1 Mo a stocker (par processus), la plupart du temps les cases de latable sont vides.
Donc on utilise plusieurs niveauxOb 0100 1110 :0001 0101 1001 :1001 0101 1001Ox 4e : 159 : 959
rep : page : offset
rep index dans le repertoire des pages, page index dans la table despages, offset position dans la page.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 24 / 1
Memoire virtuelle Pagination
Ex. de pagination (suite)
La MMU du pentium permet une table de page avec 2 indirections :
Pour lire l’adresse 0x4e159959
La MMU contient un registre donnant l’adresse de la table desrepertoires de pages.
On trouve la table des pages a l’index 0x4e = 78 de la table desrepertoires de page
On trouve la page a l’index 0x159 = 345 de la table des pages
La page se trouve en memoire physique a une adresse 0x?????000 lemot memoire demande est a l’adresse physique 0x?????959
Si on ne trouve pas la page, il y a interruptionI Si la page existe mais n’est pas en memoire Defaut de pageI Si la page n’existe pas ou est interdite le processus est signale (SIGSEG)
Pour changer de contexte, il faut changer le registre d’adresse durepertoire de page.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 25 / 1
Memoire virtuelle Pagination
Remarque
En realite, plusieurs acces memoire par acces demandeI Il faut un cache de traduction pour ameliorer le TLB � Translation
Lookaside Buffer �
I Equilibre taille des tables/nombre d’indirections
L’adresse d’une page n’utilise qu’une partie d’un mot memoire (20bits/32), les bits restant servent a stocker des informations :
I La page peut-elle etre mise en cache ?I La page existe ?I La page est-elle en acces lecture/ecriture/execution ?I La page est modifiee par rapport au disque (Dirty bit) ?I La page a-t’elle ete accedee recemment ?I . . .
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 26 / 1
Memoire virtuelle Pagination
Avantage de la pagination
Les processus ont tous un meme espace memoire.
Permet la separation des processus.
Permet le partage de memoire :I Entre processus pour creer un moyen de communication.I Partage de zones memoires contenant le code des bibliotheques
partagees.
Copie a la demande de la memoire d’un processus lors d’un fork.I Le processus fils recopie la table des pages du processus pere en
marquant chaque page en lecture seule.I C’est l’ecriture qui declenche reellement la copie.
Initialisation a zero sur le meme principe.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 27 / 1
Memoire virtuelle Remplacement de pages
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 28 / 1
Memoire virtuelle Remplacement de pages
Allocation de memoire de zones de taille fixe
Avec une memoire paginee, les demandes d’allocation s’expriment ennombre de cadres, chacun d’eux etant equivalent (pool de ressources).
Principe : on considere une suite de references a des pages xi , si lapage demandee n’est pas presente en memoire, il se produit alors undefaut de page.
Pagination anticipee : pour prevenir les defauts de pages,in-envisageable dans le cas general ;
Pagination a la demande : chargement suite a un defaut de page(curatif)
Strategie de remplacement : algorithme destine a choisir les cadres aliberer (souvent appelle � algorithme de pagination - paging - � )
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 29 / 1
Memoire virtuelle Remplacement de pages
Defaut de pageSi une demande de memoire conduit a une page qui n’est pas reellementpresente en memoire, la MMU leve une exception qui interrompt leprocesseur :
1 Deroutement du processus (sauvegarde du contexte, passage en modenoyau ...)
2 Lancement de la routine systeme de gestion des defauts de page.3 En fonction de l’adresse demandee, le systeme determine la page.
I Si la page ne fait pas partie d’un segment existant (n’existe pas) leprocessus est signale (SIGSEG)
I Sinon, la page est chargee dans un cadre libre de la memoire ou a laplace d’une autre page.
4 Pendant le chargement le processus s’endort (' qquesmilli-secondes !)
5 A la fin du chargement le processus est reveille et retourne a l’etatinitial
L’algorithme qui choisit la (les) page(s) a liberer est crucial car le nombrede defauts de pages en depend.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 30 / 1
Memoire virtuelle Remplacement de pages
ModelePour etudier les differents algorithmes de remplacement, on peut regarderleur effet sur de petit exemples :
nous considerons la suite ω =< L1, L2, . . . , Li , . . . , Lp > la suite despages referencees par un processus, obtenue a partir de la suite desadresses < x1, x2, . . . , xi , . . . , xp > des adresses utilisees par leprocessus ;
la memoire dispose de M cadres (emplacements) ;
le nombre de pages possibles est N, avec N > M ;
on cherche a connaıtre la suite < S0,S1, . . . ,Sk , . . . ,Sp > des etatsde la memoire, Sk est l’ensemble des pages en memoire apres l’accesa la page Lk .
on utilise un algorithme de pagination avec pagination a la demande(lorsqu’il y a un defaut de page, on fait de la place en retirant uneancienne page, puis on place la page demandee).
Ce modele est tres simplifie et a surtout un role d’etude.Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 31 / 1
Memoire virtuelle Remplacement de pages
Algorithme de pagination
Definition
Lorsqu’un defaut de page a lieu pour l’acces a la k ieme page, unalgorithme de pagination A doit determiner
Xk l’ensemble des pages entrantes
Yk l’ensemble des pages sortantes (on ne considere que celles qui ontete modifiees)
Pour choisir ces pages, les algorithmes utilisent les etats anterieurs :
le moment d’arrivee des pages en memoire,
l’utilisation de ces pages,
la presence de modifications (ce qui augmente le cout de sortie de lamemoire).
https://en.wikipedia.org/wiki/Page_replacement_algorithm
Attention, la version francaise est differente..
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 32 / 1
Memoire virtuelle Remplacement de pages
Couts
Cout de l’algorithme
Ces algorithmes doivent tenir compte du temps necessaire a accomplir leur tache,selon le moment, le temps disponible n’est pas le meme.
il y a de nombreux acces a la memoire (qqs nano-secondes pour mettre ajours les statistiques d’utilisation, voir LRU) ;
le choix de la page a supprimer doit etre fait rapidement (temps O(1) voirLRU, FIFO, FIFO 2e chance) ;
periodiquement, le systeme peut inspecter les pages memoire pour calculerun taux d’utilisation (NRU, vieillissement,...).
Cout indirectLes choix fait par les algorithmes ont un impact sur les performances du systeme :
chaque page chargee demande une lecture sur le disque (qqs mili-secondesde blocage) ;
si la page remplacee est modifiee, il faut une ecriture sur le disque (tempssimilaire) ;
un bon indicateur de la performance est le nombre de defauts de pages.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 33 / 1
Memoire virtuelle Exemples d’algorithmes
Algorithme FIFO
Soit la suite de pages : < 0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4 >, etudions lesalgorithmes pour M = 3 et M = 4Dans l’algorithme FIFO, la page sortante est celle qui se trouve enmemoire depuis le plus longtemps.
Exemple (M = 3 : 9 defauts de pages)
defaut ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 2 3 0 1 4 0 1 2 3 4
0 0 0 3 3 3 4 4 4 4 4 41 1 1 0 0 0 0 0 2 2 2
2 2 2 1 1 1 1 1 3 3
Y - - - 0 1 2 3 - - 0 1 -
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 34 / 1
Memoire virtuelle Exemples d’algorithmes
Exemple (M = 4 : 10 defauts de pages !)
defaut ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 2 3 0 1 4 0 1 2 3 4
0 0 0 0 0 0 4 4 4 4 3 31 1 1 1 1 1 0 0 0 0 4
2 2 2 2 2 2 1 1 1 13 3 3 3 3 3 2 2 2
Y - - - - - - 0 1 2 3 4 0
Probleme d’instabilite (Le cout ne diminue pas forcement si M augmente)
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 35 / 1
Memoire virtuelle Exemples d’algorithmes
Algorithme optimalL’algorithme Optimal necessite de prevoir l’avenir. Il retire la page nonreutilisee ou qui sera reutilisee le plus loin dans le futur.
Exemple (M = 3 : 7 defauts de pages)
defaut ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 2 3 0 1 4 0 1 2 3 4
0 0 0 0 0 0 0 0 0 2 2 21 1 1 1 1 1 1 1 1 3 3
2 3 3 3 4 4 4 4 4 4
Y - - - 2 - - 3 - - 0 1 -
Exemple (M = 4 : 6 defauts de pages)
defaut ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 2 3 0 1 4 0 1 2 3 4Y - - - - - - 3 - - - 0 -
Cet algorithme ne peut servir que pour la comparaisonFabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 36 / 1
Memoire virtuelle Exemples d’algorithmes
Utilisation du principe de localite
RappelSi a un instant t le processus utilise l’adresse a, il y a une forte probabilitequ’a l’instant t + ∆t , le processus reference l’adresse a + ∆a (∆t et ∆a
etant petits).Plusieurs algorithmes reposent sur ce principe ; leurs mises-en-œuvesnecessitent souvent des dispositifs materiels particuliers.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 37 / 1
Memoire virtuelle Exemples d’algorithmes
Algorithme LRU
La page sortante est celle qui n’a plus ete utilisee depuis le plus longtemps.
Exemple (M = 3 : 10 defauts de page)
defaut ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 2 3 0 1 4 0 1 2 3 4
0 0 0 3 3 3 4 4 4 2 2 21 1 1 0 0 0 0 0 0 3 3
2 2 2 1 1 1 1 1 1 4
Y - - - 0 1 2 3 - - 4 0 1
Exemple (M = 4 : 8 defauts de page)
defaut ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 2 3 0 1 4 0 1 2 3 4
Y - - - - - - 2 - - 3 4 0
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 38 / 1
Memoire virtuelle Exemples d’algorithmes
Principe de localite dans l’espace et dans le temps
La methode a un resultat proche de l’algorithme optimal.
Mais il faut faire qqchose a chaque acces memoire et obtenir unmaximum a chaque remplacement de page.
La mise en œuvre du LRU est difficile :I Maintenir l’ordre des pages oblige une action complexe a chaque acces
memoire ⇒ impraticable.I Stocker la date du dernier acces, cela oblige un tri pour le choix⇒ possible mais couteux.
I Compteur bidimensionnel : dispositif materiel couteux
Souvent la MMU ne fournit pas les outils indispensables.
D’ou l’utilisation d’approximations logicielles de LRU.
Pour ces approximations on utilise souvent un systeme present dans laplupart des MMU : le bit d’acces A (ou R) et le bit de modification M(ou D le dirty bit).
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 39 / 1
Memoire virtuelle Exemples d’algorithmes
FIFO 2e chance
1 une FIFO memorise l’ordre de chargement des pages2 lors de la recherche d’un cadre :
I si le bit d’acces de la page en tete de file est a FAUX, elle est retiree ;I sinon, elle obtient une � 2e chance � c’est a dire qu’elle est reinseree en
queue de file avec le bit d’acces remis a zero ;I on recommence le processus jusqu’a trouver une page qui peut etre
retiree.
Exemple (M = 3)
def. ↓ ↓ ↓ ↓ω - 0 3 0 1 3 2 3 0
Mem0 0 0 0 0 0 2 2 21 1 3 3 3 3 3 3 32 2 2 2 1 1 1 1 0
Fifo 012 012 203 203 031 031 312 312 230Acces 0 3 03 013 013 2 23 02
En resume, la page qui est enlevee est la plus ancienne qui n’ait pas eteutilisee depuis la derniere recherche de place. Si toutes ont ete utilisees,l’algorithme fait un tour complet et la plus ancienne est choisie.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 40 / 1
Memoire virtuelle Exemples d’algorithmes
Algorithme avec interruption d’horloge
Regulierement un processus inspecte les pages en passant le bit d’acces a0. De plus il utilise la valeur pour :
Marquer la page comme � Utilisee recement � : algorithme NRU.
Incrementer un compteur : algorithme NFU.
Appliquer (ou non) un vieillissement : algorithme de vieillissement.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 41 / 1
Memoire virtuelle Exemples d’algorithmes
NRU Not Recently UsedUne page est consideree comme recemment utilisee si elle est referencee (lebit d’acces est vrai) ou si elle a ete referencee au cours de la periodeprecedente (le bit d’acces etait vrai au moment du top d’horloge).
Exemple (NRU M = 3 /intervalle d’inspection = 2)
def. ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 0 2 0 3 1 4 2 4 1 4 3
C 1 0 0 0 0 0 0 0 4 4 4 4 4 4C 2 - 1 1 1 1 3 3 3 2 2 2 2 3C 3 - - - 2 2 2 1 1 1 1 1 1 1
Acc. 0 01 0 02 0 03 1 14 2 24 1 14 3
Util. - - 01 01 02 02 03 03 14 14 24 24 14
Souvent, on utilise le bit de modification en plus de l’utilisation ce qui creeun ordre (partiel) :
1 Non utilisee et non modifiee2 Modifiee mais non utilisee3 Utilisee mais non modifiee4 Utilisee et modifiee
Il est difficile de choisir entre 2 et 3.Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 42 / 1
Memoire virtuelle Exemples d’algorithmes
Algorithme de viellissement (compteur 4 bits)Les valeurs du compteur precedant sont diminuees au cours du temps.Par exemple on utilise un compteur sur 8 bits, a chaque etape il est divisepar 2 (decale a droite) et son bit de poids fort est fixe a la valeur de A.
Exemple (Vieillissement M = 3 /intervalle d’inspection = 2)
def. ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ω 0 1 0 2 0 3 1 4 2 4 1 4 3
C 1 0 0 0 0 0 0 0 0 2 2 2 2 3C 2 - 1 1 1 1 3 3 4 4 4 4 4 1C 3 - - - 2 2 2 1 1 1 1 1 1 4
Cpt.0 0 0 8 8 12 12 14 14 7 7 3 3 1Cpt.1 0 0 8 8 4 4 2 2 9 9 4 4 10Cpt.2 0 0 0 0 8 8 4 4 2 2 9 9 4Cpt.3 0 0 0 0 0 0 8 8 4 4 2 2 1Cpt.4 0 0 0 0 0 0 0 0 8 8 12 12 14
Il y a d’autres methodes de vieillissement qui diminuent plus ou moinsrapidement le compteur.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 43 / 1
Memoire virtuelle Exemples d’algorithmes
Autre algorithme de aging (Linux 2.2)
1 initialement : valeur de 3
2 balyage (par tranche) :
si Young(pte) alors[acces depuis le dernier passage]age(pte)+ = 3si age(pte) > 20 alors
age(pte) = 20
sinonage(pte)− = 1si age(pte) < 0 alors
age(pte) = 0
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 44 / 1
Memoire virtuelle Exemples d’algorithmes
Adaptation et amelioration
Utilisations des cadres marques libres en cache (si la meme page estredemandee) c’est un defaut de page mineur,
Liste particuliere des cadres marques libres et contenant des pagessales, recopie sur swap par un processus, un kernel thread, en tachede fond pdflush,
Maintien d’un pool de cadres libres pour repondre rapidement auxdemandes.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 45 / 1
Memoire virtuelle Exemples d’algorithmes
Exemple de mise en œuvre sous Linux
Il n’est pas realiste de rechercher une page a liberer lorsqu’on en a besoin.En realite :
L’algorithme de pagination est execute en tache de fond (processus 0swapper sur certains Unix, kernel thread kswapd sous Linux).
Son role est de maintenir un minimum de pages libres disponible pourtoute demande.
Balayage par morceaux de la table de pages a la recherche d’uncertain nombre de pages candidates.
Comportement adaptatif en fonction de la charge :1 free pages high : seuil de declenchement, swap-out doux (par defaut 4
pages a sortir par tour)2 free pages low : seuil de declenchement, swap-out agressif (par defaut
8 pages ?)3 free pages min : seuil inferieur a ne jamais depasser (sauf pour le
noyau)
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 46 / 1
Memoire virtuelle Exemples d’algorithmes
On complique un peu
Les algorithmes precedants ne sont que des simplifications :
Besoin de pages contigues (driver).
Certaines pages ne peuvent etre liberees :I lorsqu’un processus opere une lecture sur le disque, il est endormi mais
ses pages doivent rester ;I les pages du systeme.
Certaines pages sont plus � difficiles � a libererI pages partagees ;I page modifiees.
Le systeme doit eviter de les liberer.
Contraintes externes :I temps reel (ne pas swapper un processus critique) ;I consommation d’un portable (pas d’ecriture reguliere sur le disque).
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 47 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 48 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
Multiprogrammation et memoire
En general, les cadres sont gerees de manieres globales pour tous lesprocessus.
Une processus qui demande plus de memoire aura plus de pages quilui sont affectees.
Il existe cependant des limites d’utilisation (ulimit, cgroups, ...)
Comment etre sur qu’un processus a suffisamment de memoire ?
? Quelle est la definition de � suffisamment de memoire � ?
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 49 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
Ensemble de travail
Definition
Par le principe de localite, un processus sur une periode courte utilise unsous ensemble limite de ses pages. C’est l’ensemble de travail (workingset).
Un processus qui accede a la memoire va faire de nombreux defautsde page jusqu’a ce qu’il reconstitue son espace de travail.
On peut eviter ces defauts de pages si on charge ces pagesautomatiquement.
⇒ un bon algorithme de remplacement conserve les page qui sont dansl’ensemble de travail d’un processus et libere rapidement les autres.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 50 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
Ecroulement
Si le nombre de pages des ensembles de travail des processus prets estsuperieur a la memoire physique, le systeme genere de nombreuxdefauts de pages
⇒ il y a risque d’ecroulement ou trashingRendemment UC
Degrée de multiprogrammation
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 51 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
Description de la memoire d’un processus
Chaque processus doit avoir une structure pour decrire les differentssegments :
Fichiers mappe en memoireI segment de code ;I bibliotheques partagees.
Segments anonymesI pile ;I tas.
Partages
Voir la commande pmap ou le contenu du fichier/proc/pid du processus/maps
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 52 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
Description de la memoire d’un processus
Le mappage memoire d’un processus est une structure qui contient tousles differents segments.
Chaque segment est une zone contigue de la memoire virtuelle.
La structure doit etre efficace pour un petit nombre de segment(liste) et un grand nombre (arbre AVL).
Structure independante du materielI MachOS, Linux 2.2 : les zones de memoires virtuelles, vm area ;I Windows : les Virtual Address Descriptor VAD.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 53 / 1
Memoire virtuelle Multiprogrammation et memoire virtuelle
VM Area
struct mm_struct vm_area
vm_start
vm_end
Chainage AVL
Chainage sequentiel
Memoire Virtuelle
d’un processus
vm_flags
vm_next
vm_inode
vm_ops
open
close
umap
sync
advise
nopage
wppage
swapout
swapin
Virtual Memory
Operations
Page Directory
mmap
mmap_avl
pdg
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 54 / 1
Appels systeme
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 55 / 1
Appels systeme
Partage memoireLes processus peuvent partager des morceaux de memoire grace a desobjets memoire nommes
Memoire partagee POSIX
int shm open(const char ∗nom, int oflag , mode t mode);
Ouvre un objet memoire partage. Comme la fonction open, on peutcreer un nouvel objet (option O CREAT) ouvrir en lecture(O RDONLY) ou lecture et ecriture (O RDWR). mode donne les droitsd’acces a l’objet. La fonction renvoie un descripteur de fichier ou -1en cas d’erreur.int ftruncate ( int fd , off t length );
fixe la taille d’un fichier a length. Si le fichier est plus petit il estagrandi, sinon, il est tronque.int close( int fd );
ferme le descripteur de fichier.int shm unlink(const char ∗nom);
efface l’objet partage.
Ces objets memoire sont persistants c’est-a-dire continuent d’existerjusqu’a etre effaces ou jusqu’a l’extinction du systeme.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 56 / 1
Appels systeme
Projection memoireUn objet memoire ou un fichier peut etre projete dans la memoire virtuelledu processus. Cela permet d’acceder a son contenu comme un tableaupresent en memoire.
Protection memoire
v o i d ∗mmap( v o i d ∗addr , s i z e t l e n g t h ,i n t prot , i n t f l a g s ,i n t fd , o f f t o f f s e t ) ;
Ajoute length octets de l’objet fd a l’adresse addr. Selon le la valeurde prot,
I MAP SHARED la projection est partagee, chaque modification seradisponible pour les autres processus qui partagent cet objet.
I MAP PRIVATE la projection est privee, c’est le COPY ON WRITE
int munmap(void ∗addr, size t length);
Supprime la projection et fait en sorte que le prochain acces a addr
genere une erreur de segmentation.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 57 / 1
Appels systeme
Exemple - I
Creation de l’objet partage
f d = shm open ("partage.mem" , O RDWR |O CREAT , 0 6 0 0 ) ;i f ( f d==−1) {
perror ("shm_open" ) ;e x i t ( 1 ) ;
}
Lorsque c’est une creation, la taille de l’objet cree est 0 il fautl’agrandir
r e s = f t r u n c a t e ( fd , nbchar ) ;i f ( r e s == −1) {
perror ("ftruncate" ) ;e x i t ( 1 ) ;
}
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 58 / 1
Appels systeme
Exemple - II
Projection en memoire virtuelle
c h a r ∗ p a r t a g e ;p a r t a g e = mmap(NULL , nbchar ,
PROT READ |PROT WRITE , MAP SHARED, fd , 0 ) ;i f ( p a r t a g e == MAP FAILED) {
perror ("mmap" ) ;e x i t ( 1 ) ;
}
Ecriturestrcpy (partage , "coucou");
Lecturefprintf (stdout , "lu \%s\\n", partage);
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 59 / 1
Appels systeme
Exemple - III
Liberation
r e s = munmap( pa r t ag e , nbchar ) ;i f ( r e s == −1) {
perror ("munmap" ) ;e x i t ( 1 ) ;}
/∗ f e r m e t u r e du f i c h i e r ∗/c l o s e ( f d ) ;
/∗ s u p p r e s s i o n du nom pour l e p r o c e s s u s c r e a t e u r ∗/r e s = s h m u n l i n k ("./partage.mem" ) ;i f ( r e s ==−1) {
perror ("shm_unlink" ) ;e x i t ( 1 ) ;
}
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 60 / 1
Appels systeme
Section critique
Les segments partages comme les variables partagees posent desproblemes d’acces concurrents, il faut un mecanisme de synchronisation :
i n t s e m i n i t ( sem t ∗sem , i n t pshared , u n s i g n e d i n t v a l u e ) ;sem t ∗ sem open ( c o n s t c h a r ∗name , i n t o f l a g ,
mode t mode , u n s i g n e d i n t v a l u e ) ;i n t sem wai t ( sem t ∗sem ) ;i n t s e m c l o s e ( sem t ∗sem ) ;i n t s e m d e s t r o y ( sem t ∗sem ) ;
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 61 / 1
Appels systeme
Segments
demarrage d’un processus (simplifie) :
un segment de code / instruction (prive ou public, executable, lecture)
un segment de pile, pour les variables locales (prive, executable ( ?),lecture / ecriture)
un segment de donnees / variables globales (prive, non executable,lecture / ecriture)
malloc() cree (si necessaire) un segment prive, en lecture / ecriturepour shmat() et mmap(), on precise les droits voulus, prive ou public, etc.cf. mprotect().
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 62 / 1
Conclusion
Conclusion
La memoire est l’une des ressource principale.I Probleme d’organisation des donnees.I Probleme d’utilisation de la ressource.
Grosses evolution du materiel.I MMU.I Cache.I Mecanisme de prefetch.
Importance du principe de localite.
Pagination.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 63 / 1
Conclusion
A retenir
Mecanisme de pagination :I fonctionnement ;I interet ;I amelioration (TLB, pool de pages libres, . . .)
Algorithme de remplacement de page.
Programmation :I droit sur les segments ;I partage ;I mapping de fichier.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 64 / 1