Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire...

63
Gestion de la m´ emoire Yves Caniou Univ. Claude Bernard Lyon 1 eance 3 Yves Caniou [email protected] CM + TD + TP Yosra Zguira [email protected] TP Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la m´ emoire eance 3 1 / 63

Transcript of Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire...

Page 1: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Gestion de la memoire

Yves Caniou

Univ. Claude Bernard Lyon 1

seance 3

Yves Caniou [email protected] CM + TD + TPYosra Zguira [email protected] TP

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 1 / 63

Page 2: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 2 / 63

Page 3: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 3 / 63

Page 4: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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)

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 4 / 63

Page 5: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 5 / 63

Page 6: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

.Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 6 / 63

Page 7: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Introduction Liaison/Isolation

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 7 / 63

Page 8: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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).

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 8 / 63

Page 9: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 9 / 63

Page 10: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 10 / 63

Page 11: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 11 / 63

Page 12: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Introduction Allocation/Liberation

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 12 / 63

Page 13: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 13 / 63

Page 14: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 14 / 63

Page 15: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 15 / 63

Page 16: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 16 / 63

Page 17: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 17 / 63

Page 18: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 .

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 18 / 63

Page 19: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 19 / 63

Page 20: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Memoire virtuelle

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 20 / 63

Page 21: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 21 / 63

Page 22: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 22 / 63

Page 23: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 23 / 63

Page 24: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 24 / 63

Page 25: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 . . .

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 25 / 63

Page 26: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 26 / 63

Page 27: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Memoire virtuelle Remplacement de pages

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 27 / 63

Page 28: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 - � )

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 28 / 63

Page 29: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 29 / 63

Page 30: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 30 / 63

Page 31: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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..

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 31 / 63

Page 32: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 32 / 63

Page 33: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 -

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 33 / 63

Page 34: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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)

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 34 / 63

Page 35: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 comparaisonYves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 35 / 63

Page 36: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 36 / 63

Page 37: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 37 / 63

Page 38: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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).

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 38 / 63

Page 39: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 39 / 63

Page 40: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 40 / 63

Page 41: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 41 / 63

Page 42: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 42 / 63

Page 43: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 43 / 63

Page 44: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 44 / 63

Page 45: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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)

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 45 / 63

Page 46: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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).

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 46 / 63

Page 47: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Memoire virtuelle Multiprogrammation et memoire virtuelle

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 47 / 63

Page 48: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 � ?

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 48 / 63

Page 49: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 49 / 63

Page 50: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 50 / 63

Page 51: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 51 / 63

Page 52: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 52 / 63

Page 53: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 53 / 63

Page 54: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

Appels systeme

1 IntroductionLiaison/IsolationAllocation/Liberation

2 Memoire virtuellePaginationRemplacement de pagesExemples d’algorithmesMultiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 54 / 63

Page 55: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 55 / 63

Page 56: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 56 / 63

Page 57: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 ) ;

}

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 57 / 63

Page 58: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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);

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 58 / 63

Page 59: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 ) ;

}

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 59 / 63

Page 60: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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 ) ;

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 60 / 63

Page 61: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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().

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 61 / 63

Page 62: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 62 / 63

Page 63: Gestion de la mémoire - GRAALycaniou/Teaching/1617/L3/cm3-memoire_P.pdf · Gestion de la m emoire Yves Caniou Univ. Claude Bernard Lyon 1 s eance 3 Yves Caniou yves.caniou@univ-lyon1.fr

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.

Yves Caniou (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 3 63 / 63