You are on page 1of 60

Gestion de la memoire

Fabien Rico fabien.rico@univ-lyon1.fr CM + TD + TP


Jacques Delmas jacques.delmas@delnet.fr TD
Nicolas Louvet nicolas.louvet@ens-lyon.fr TD
Qinna Wang qinna.wang@ens-lyon.fr TP
Vincent Lanor vincent.lanore@ens-lyon.fr TP
Anthony Simonet Anthony.Simonet@inria.fr TP
Alexandre Isoard alexandre.isoard@ens-lyon.fr TP
Francois Gindraud francois.gindraud@ens-lyon.fr TP

Univ. Claude Bernard Lyon 1

seance 5

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 1 / 60


1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 2 / 60


Introduction

A quoi sert la memoire ?

Stocker le code des fonctions


Stocker les variables globales (Tas)
Stocker les variables locales (Pile)
Une donnee pour pouvoir etre traitee doit etre dans un registre du
processeur.

Problemes de base
Lorganisation physique des donnees : c-a-d la maniere
dutiliser lespace physique pour stocker les
informations. Afin de pouvoir allouer lespace et eviter la
fragmentation.
Liaison : association dun identificateur avec un
objet a des fins dindexation et de recherche.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 3 / 60


Introduction

Hierarchie des memoires


CPU

1ns < 1Ko Registres Compilateur

2ns 4Mo Caches L1, L2,. . . Materiel


Vitesse

Taille

10ns qques Go Memoire centrale (RAM) Systeme

10ms 1To Disque Systeme

CD-ROM, CD reinscriptible, cartouche Logiciel


1s
magnetique, le reseau !, etc . . . & Systeme

Principe de localite : Les programmes tendent a utiliser des instructions


et des donnees accedees dans le passe (localite temporelle) ou proches de
celle-ci (localite spatiale)

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 4 / 60


Introduction

Cercle vertueux ?

Les programmeurs suivent naturellement le principe de localite.


Donc ceux qui concoivent les systemes sen apercoivent et lutilise
(mecanismes de pages, overlay...).
Donc pour garder de bonnes performances les programmeurs suivent
ce principe.
Donc ceux qui concoivent les processeurs lutilisent (pipeline, cache
memoire...)
Donc optimiser un code revient souvent a ameliorer sa localite
...
Ce principe prend de plus en plus dimportance.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 5 / 60


Introduction Partitionnement de la memoire

1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 6 / 60


Introduction Partitionnement de la memoire

Generalite sur la memoire : decoupage dans un programme

La memoire dun ordinateur est forcement organisee en partitions.


limites physiques : ZONE DMA, ZONE NORMAL, ZONE HIGHMEM,
par nature : code, donnees, piles
par privilege : zone noyau ou utilisateur
par lutilisation : dans le temps, phases dun programme

Notion de segment : adressage segmente, toutes les adresses nont


pas le meme role (cause des erreurs de segmentation).
Notion de zone (memory area) : adressage virtuel, ladresse manipulee
par le programme nest pas celle de la memoire physique.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 7 / 60


Introduction Partitionnement de la memoire

Pourquoi partitionner la memoire

Cela permet dorganiser la memoire :


I un segment a un role precis ;
I un segment appartient a un processus.
Cela simplifie ladressage :
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 5 8 / 60


Introduction Partitionnement de la memoire

Historique des decoupages


Monoprogrammation : Au minimum separation en 3 : systeme,
pilotes de peripheriques, processus en cours.
Zones de recouvrement : overlays, un processus est divise en une
zone permanente et des overlays interchangeables (temps reel et
en embarque)
Partitions fixes : la memoire est predecoupee en segments, un
processus qui demande de la memoire obtient un de ces segments
dont la taille est superieure a la demande (fragmentation externe).
Partitions variables : on fourni au processus un segment de la taille
voulue lorsquil en fait la demande (fragmentation interne).
Pagination : la memoire est decoupee en pages (' des segments de
petite taille fixe), lorsquil fait la demande dune zone de la memoire,
un processus recoit suffisamment de pages pour couvrir ses besoins,
mais ces pages ne sont pas forcement contigues. On utilise ladressage
virtuel pour que la zone semble contigue au le processus.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 9 / 60
Introduction Partitionnement de la memoire

Allocation memoire : segments de tailles variables

Le probleme : Etant donne une memoire (adresse de 0 a N),


comment satisfaire au mieux des demandes Di de taille 0 < si et de
liberations Li ?
Comment allouer/des-allouer un nouveau segment ? Fusionner les
segments libres contigues
unite dallocation : en theorie cest loctet, en pratique cest souvent
plus (16 octets, ...)
Fragmentation interne : espace inutilise dans une unite dallocation
Fragmentation externe : trou entre deux zones occupees

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 10 / 60


Introduction Partitionnement de la memoire

Allocation memoire : segments de tailles variables

pour corriger la fragmentation externe


Compactage : en consequence de la fragmentation externe, un
compactage peut etre necessaire
sur place : recopie en memoire des zones allouees pour
rassembler les trous translation dynamique
par va-et-vient (swap) : recopie en memoire secondaire
de zones allouees et rechargement demande.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 11 / 60


Introduction Partitionnement de la memoire

Algorithmes dallocation

Bases sur le chanage des zones libres :


I Best fit : meilleur ajustement, cest a dire la zone de taille la plus
proche
I Worse fit : pire ajustement, la zone de plus grande taille
I First fit : la premiere zone possible trouvee
I adaptation : VMS,
Demande taille partition algorithme
Grande variable worse fit
Moyenne variable best fit
Petite fixe first fit
I sensible a la fragmentation externe

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 12 / 60


Introduction Partitionnement de la memoire

Algorithmes dallocation

Bases sur la subdivision


I binaire : buddy system ou systeme du compagnon ,
F On manipule des blocs de taille 2k rassembles par taille.
F Lorsquil faut un nouveau bloc de taille 2k et quil ny en a pas on casse
un bloc de taille 2k+1 en 2 blocs compagnons
F Lorsquon libere un bloc, si son compagnon est libre, on les fusionne.
I Generalise : suite de Fibbonacci
I sensible a la fragmentation interne

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 13 / 60


Introduction Partitionnement de la memoire

Algorithmes dallocation

Pagination
I Il est plus facile dutiliser des partitions de tailles fixes : lespace
memoire (virtuel) est decoupe en pages qui sont placees ou non en
memoire physique.
I Lorsquun processus demande de la memoire, il obtient un nombre
suffisant 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 Base 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 5 14 / 60


Introduction Liaison

1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 15 / 60


Introduction Liaison

Liaison dans un programme - I

Comment faire la correspondance entre une adresse logique dans un


programme 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 code
I relative : dynamiquement, lors de lexecution, calcul des adresses
physiques par addition de la valeur dun registre (dit de base) ou dune
entree de tableau (table des segments).

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 16 / 60


Introduction Liaison

Liaison dans un programme - II

Segmentation : Une adresse est decomposee en 2, Segment:Offset.


Ladresse lineaire est formee :
I De ladresse logique = offset
I De ladresse du segment lue dans une table en fonction de la valeur
dun registre de segment (cs, ds, ss, es).
virtuel : programme dans un espace virtuel, adresse physique calculee
dynamiquement a lexecution.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 17 / 60


Memoire virtuelle

1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 18 / 60


Memoire virtuelle

Memoire virtuelle

Idee : le processeur travaille avec des adresses memoires sans rapport


avec les adresses physiques.
Capacite dadressage : lensemble des adresses que lon peut coder,
par ex. 4Go sur un processeur 32 bits (0x00000000 - 0xFFFFFFFF),
16Eo pour un 64 bits.
Espace dadressage : partie utilisable par le processus.
Lespace dadressage est partitionne en segments dependant du
systeme dexploitation.
A chaque lecture memoire, ladresse physique est calculee.
Ce calcul permet de faire des verifications supplementaires
I Presence effective de ladresse en memoire
I Droits
Materiel dedie.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 19 / 60


Memoire virtuelle

Espace dadressage dun processus

Linux Windows Vista


4Go 4Go
interdit
Zone noyau
3Go

Pile Zone noyau


Table des pages, . . .

Pile, donnee, . . .
2Go HAL + SE
Donnees systeme
Zone utilisateur
Code et donnees
du processus Zone utilisateur
Tas

Code
interdit

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 20 / 60


Memoire virtuelle Pagination

Pagination

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 octet)
1 Mo a stocker (par processus), la plupart du temps les cases de la
table sont vides.
Ox 4e : 159 : 959
On utilise plusieurs niveaux rep : page : offset

rep index dans le repertoire des pages, page index dans la table des
pages.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 21 / 60


Memoire virtuelle Pagination

Ex. de pagination (suite)


La MMU du pentium permet une table de page avec 2 indirections :
Pour lire ladresse 0x4e159959
La MMU contient un registre donnant ladresse de la table des
repertoires de pages.
On trouve la table des pages a lindex 0x4e = 78 de la table des
repertoires de page
On trouve la page a lindex 0x159 = 345 de la table des pages
La page se trouve en memoire physique a une adresse 0x?????000 le
mot memoire demande est a ladresse physique 0x?????959
Si on ne trouve pas la page, il y a interruption
I Si la page existe mais nest pas en memoire Defaut de page
I Si la page nexiste pas ou est interdite le processus est signale (SIGSEG)
Pour changer de contexte, il faut changer le registre dadresse du
repertoire de page.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 22 / 60


Memoire virtuelle Pagination

Remarque

En realite plusieurs acces memoire par acces demandes


I Il faut un cache de traduction pour ameliorer le TLB Translation
Lookaside Buffer
I Equilibre taille des tables/nombre dindirections
Ladresse dune page utilise quune partie dun mot memoire (20
bits/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-telle ete accedee recemment ?
I ...

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 23 / 60


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 :
Entre processus pour creer un moyen de communication.
I

Partage de zones memoires contenant le code des bibliotheques


I

partagees.
Copie a la demande de la memoire dun processus lors dun fork.
I Le processus fils recopie la table des pages du processus pere en

marquant chaque page en lecture seule.


I Cest lecriture qui declenche reellement la copie.

Initialisation a zero sur le meme principe.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 24 / 60


Memoire virtuelle Remplacement de pages

1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 25 / 60


Memoire virtuelle Remplacement de pages

Allocation de memoire de zones de taille fixe

Avec une memoire paginee, les demandes dallocation sexpriment en


nombre de cadres, chacun deux etant equivalent (pool de ressources).
Principe : on considere une suite de references a des pages xi , si la
page demandee nest pas presente en memoire, il se produit alors un
defaut 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 a
liberer (souvent appelle algorithme de pagination - paging - )

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 26 / 60


Memoire virtuelle Remplacement de pages

Defaut de page
Si une demande de memoire conduit a une page qui nest pas reellement
presente en memoire, la MMU leve un exception qui interrompt le
processeur :
1 Deroutement du processus (sauvegarde du contexte, passage en mode

noyau ...)
2 Lancement de la routine systeme de gestion des defauts de page.

3 En fonction de ladresse demandee, le systeme determine la page.

I Si la page ne fait pas partie dun segment existant (nexiste pas) le


processus est signale (SIGSEG)
I Sinon, la page est chargee dans un cadre libre de la memoire ou a la
place dune autre page.
4 Pendant le chargement le processus sendort (' qques
milli-secondes !)
5 A la fin du chargement le processus est reveille et retourne a letat

initial
Lalgorithme qui choisit la (les) page(s) a liberer est crucial car le nombre
de defauts de page en depend.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 27 / 60
Memoire virtuelle Remplacement de pages

Modele
Pour etudier les differents algorithmes de remplacement, on peu regarder
leur effet sur de petit exemples :
nous considerons la suite =< L1 , L2 , . . . , Li , . . . , Lp > la suite des
pages referencees par un processus, obtenue a partir de la suite des
adresses < x1 , x2 , . . . , xi , . . . , xp > des adresses utilisees par le
processus ;
la memoire dispose de M cadres (emplacements) ;
le nombre de pages possibles est N, avec N > M ;
on cherche a connatre la suite < S0 , S1 , . . . , Sk , . . . , Sp > des etats
de la memoire, Sk est lensemble des pages en memoire apres lacces
a la page Lk .
on utilise un algorithme de pagination avec pagination a la demande
(lorsquil y a un defaut de page, on fait de la place en retirant une
ancienne page, puis on place la page demandee).
Ce modele est tres simplifie et a surtout un role detude.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 28 / 60
Memoire virtuelle Remplacement de pages

Algorithme de pagination

Definition
Lorsquun defaut de page a lieu pour lacces a la k ieme page, un
algorithme de pagination A doit determiner
Xk lensemble des pages entrantes
Yk lensemble des pages sortantes (on ne considere que celles qui ont
ete modifiees)

Pour choisir ces pages, les algorithmes utilisent les etats anterieurs :
le moment darrivee des pages en memoire,
lutilisation de ces pages,
la presence de modifications (ce qui augmente le cout de sortie de la
memoire).

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 29 / 60


Memoire virtuelle Remplacement de pages

Couts
Cout de lalgorithme
Ces algorithmes doivent tenir compte du temps necessaire a accomplir leur tache,
selon le moment, le temps disponible nest pas le meme.
il y a de nombreux acces a la memoire (qqs nano-secondes pour mettre a
jours les statistiques dutilisation, voir LRU) ;
le choix de la page a supprimer doit etre fait rapidement (temps O(1) voir
LRU, FIFO, FIFO 2e chance) ;
periodiquement, le systeme peut inspecter les pages memoire pour calculer
un taux dutilisation (NRU, vieillissement,...).

Cout indirect
Les choix fait par les algorithmes ont un impact sur les performances du systeme :
chaque page chargee demande une lecture sur le disque (qqs mili-secondes
de blocage) ;
si la page remplacee est modifiee, il faut une ecriture sur le disque (temps
similaire) ;
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 5 30 / 60
Memoire virtuelle Exemples dalgorithmes

Algorithme FIFO

Soit la suite de pages : < 0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4 >, etudions les


algorithmes pour M = 3 et M = 4
Dans lalgorithme FIFO, la page sortante est celle qui se trouve en
memoire 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 4
1 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 5 31 / 60


Memoire virtuelle Exemples dalgorithmes

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 3
1 1 1 1 1 1 0 0 0 0 4
2 2 2 2 2 2 1 1 1 1
3 3 3 3 3 3 2 2 2
Y - - - - - - 0 1 2 3 4 0

probleme dinstabilite (Le cout ne diminue pas forcement si M augmente)

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 32 / 60


Memoire virtuelle Exemples dalgorithmes

Algorithme optimal
Lalgorithme Optimal necessite de prevoir lavenir. Il retire la page non
reutilisee 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 2
1 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 4
Y - - - - - - 3 - - - 0 -

Cette algorithme ne peut servir que pour la comparaison


Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 33 / 60
Memoire virtuelle Exemples dalgorithmes

Utilisation du principe de localite

Rappel
Si a un instant t le processus utilise ladresse a, il y a une forte probabilite
qua linstant t + t , le processus reference ladresse a + a (t et a
etant petits).
Plusieurs algorithmes sont bases sur ce principe ; leurs mises en uves
necessitent souvent des dispositifs materiels particuliers.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 34 / 60


Memoire virtuelle Exemples dalgorithmes

Algorithme LRU
La page sortante est celle qui na 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 2
1 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 5 35 / 60


Memoire virtuelle Exemples dalgorithmes

Principe de localite dans lespace et dans le temps


La methode a un resultat proche de lalgorithme optimal.
Mais il faut faire qqchose a chaque acces memoire et obtenir un
maximum a chaque remplacement de page.
La mise en uvre du LRU est difficile :
I Maintenir lordre 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 fournis pas les outils indispensables.
Dou lutilisation dapproximations logiciel de LRU.
Pour ces approximations on utilise souvent un systeme present dans la
plupart des MMU : le bit dacces 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 5 36 / 60


Memoire virtuelle Exemples dalgorithmes

FIFO 2e chance
1 une FIFO memorise lordre de chargement des pages
2 lors de la recherche dun cadre :
I si le bit dacces de la page en tete de file est a FAUX, elle est retiree ;
I sinon, elle obtient une 2e chance cest a dire quelle est reinseree en
queue de file avec le bit dacces remis a zero ;
I on recommence le processus jusqua trouver une page qui peut etre
retiree.

Exemple (M = 3)
def.
- 0 3 0 1 3 2 3 0
0 0 0 0 0 0 2 2 2
Mem 1 1 3 3 3 3 3 3 3
2 2 2 2 1 1 1 1 0
Fifo 012 012 203 203 031 031 312 312 230
Acces 0 3 03 013 013 2 23 02

En resume, la page qui est enlevee est la plus ancienne qui nait pas ete
utilisee depuis la derniere recherche de place. Si toutes ont ete utilisees,
lalgorithme fait un tour complet et la plus ancienne est choisie.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 37 / 60
Memoire virtuelle Exemples dalgorithmes

Algorithme avec interruption dhorloge

Regulierement un processus inspecte les pages en passant le bit dacces a


0. 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 5 38 / 60


Memoire virtuelle Exemples dalgorithmes

NRU Not Recently Used


Une page est consideree comme recemment utilisee si elle est referencee (le
bit dacces est vrai) ou si elle a ete referencee au cours de la periode
precedente (le bit dacces etait vrai au moment du top dhorloge).

Exemple (NRU M = 3 /intervalle dinspection = 2)


def.
0 1 0 2 0 3 1 4 2 4 1 4 3
C1 0 0 0 0 0 0 0 4 4 4 4 4 4
C2 - 1 1 1 1 3 3 3 2 2 2 2 3
C3 - - - 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 lutilisation ce qui cree


un ordre (partiel) :
1 Non utilisee et non modifiee
2 Modifiee mais non utilisee
3 Utilisee mais non modifiee
4 Utilisee et modifiee
Il est difficile de choisir entre 2 et 3.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 39 / 60
Memoire virtuelle Exemples dalgorithmes

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 divise
par 2 (decale a droite) et son bit de poids fort est fixe a la valeur de A.

Exemple (Vieillissement M = 3 /intervalle dinspection = 2)


def.
0 1 0 2 0 3 1 4 2 4 1 4 3
C1 0 0 0 0 0 0 0 0 2 2 2 2 3
C2 - 1 1 1 1 3 3 4 4 4 4 4 1
C3 - - - 2 2 2 1 1 1 1 1 1 4
Cpt.0 0 0 8 8 12 12 14 14 7 7 3 3 1
Cpt.1 0 0 8 8 4 4 2 2 9 9 4 4 10
Cpt.2 0 0 0 0 8 8 4 4 2 2 9 9 4
Cpt.3 0 0 0 0 0 0 8 8 4 4 2 2 1
Cpt.4 0 0 0 0 0 0 0 0 8 8 12 12 14

Il y a dautres methodes de vieillissement qui diminuent plus ou moins


rapidement le compteur.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 40 / 60
Memoire virtuelle Exemples dalgorithmes

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)+ = 3
si age(pte) > 20 alors
age(pte) = 20
sinon
age(pte) = 1
si age(pte) < 0 alors
age(pte) = 0

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 41 / 60


Memoire virtuelle Exemples dalgorithmes

Adaptation et amelioration

Utilisations des cadres marques libres en cache (si la meme page est
redemandee) cest un defaut de page mineur,
Liste particuliere des cadres marques libres et contenant des pages
sales, recopie sur swap par un processus un kernel thread en tache de
fond pdflush ,
maintien dun pool de cadres libres pour repondre rapidement aux
demandes.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 42 / 60


Memoire virtuelle Exemples dalgorithmes

Exemple de mise en oeuvre sous Linux

Lalgorithme de pagination est execute en tache de fond (processus 0


swapper sur certains Unix, kernel thread kswapd sous Linux)
Balayage par morceaux de la table de pages a la recherche dun
certain nombre de pages candidates,
Comportement adaptatif en fonction de la charge (objectif : conserver
un pourcentage donne de cadres libres) :
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 5 43 / 60


Memoire virtuelle Exemples dalgorithmes

On complique un peu

Les algorithmes precedants ne sont que des simplifications :


Besoin de pages contigues (driver).
Certaines pages ne peuvent etre liberees :
I lorsquun 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 liberer
I 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 dun portable (pas decriture reguliere sur le disque).

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 44 / 60


Memoire virtuelle Multiprogrammation et memoire virtuelle

1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 45 / 60


Memoire virtuelle Multiprogrammation et memoire virtuelle

Multiprogrammation et memoire virtuelle

Remplacement local ou global ?


strategies locales :
1 partition fixe : gele le degre de multiprogrammation
2 partition variable : equitable, MN cadres par processus, ou proportionnel
a la taille de lespace virtuel,
PN
V = i=1 Vi
Vi M
mi = V

ou M est le nombre de cadres, N le nombre de processus, Vi la taille


de lespace virtuel du processus i, mi le nombre de cadres qui lui seront
affectes.
stategie globale : utilisee generallement, car meilleure
limite : un nombre minimal de cadres alloues a un processus doit etre
respecte (depend du processeur)

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 46 / 60


Memoire virtuelle Multiprogrammation et memoire virtuelle

Ensemble de travail

Definition
Par le principe de localite, un processus sur une periode courte utilise un
sous ensemble limite de ses pages. Cest lensemble de travail (working
set).

Un processus qui accede a la memoire va faire de nombreux defauts


de page jusqua ce quil reconstitue son espace de travail.
On peut eviter ces defauts de pages si on charge ces pages
automatiquement.
de nombreux systemes gerent les ensembles de travail

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 47 / 60


Memoire virtuelle Multiprogrammation et memoire virtuelle

Ecroulement

Si le nombre de pages des ensembles de travail des processus pres est


superieur a la memoire physique, le systeme genere de nombreux
defauts de pages
Rendemment UC

il y a risque decroulement ou trash Degree de multiprogrammation

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 48 / 60


Memoire virtuelle Multiprogrammation et memoire virtuelle

Probleme de la taille de la table des pages

La gestion des pages doit etre rapide, cela suppose donc des tables de
pages de petite taille.
utilisation de la segmentation paginee (une table de page par
segment, dimensionnement adequat)
utilisation de structures de donnees independantes du materiel
(MachOS, Linux 2.2), les zones de memoires virtuelles : vm area,
organisees en arbre equilibre (AVL) dintervales :

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 49 / 60


Memoire virtuelle Multiprogrammation et memoire virtuelle

VM Area
Memoire Virtuelle
mmap vm_next 000
111
mmap_avl
111
000
000
111
dun processus
000
111
000
111
000
111
000
111
pdg 000
111
000
111
000
111
000
111
000
111
vm_end

vm_start
111
000
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
struct mm_struct vm_area
000
111
000
111
Page Directory
1111
0000
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
vm_ops 0000
1111
0000
1111
0000
1111
vm_inode 0000
1111
open 0000
1111
0000
1111
close vm_flags 0000
1111
0000
1111
umap
Chainage AVL
sync
000
111
Chainage sequentiel advise 111
000
000
111
000
111
000
111
nopage 000
111
000
111
000
111
wppage 000
111
000
111
000
111
000
111
swapout
000
111
000
111
000
111
swapin 000
111
000
111
000
111
000
111
000
111
Virtual Memory 000
111
Operations

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 50 / 60


Appels systeme

1 Introduction
Partitionnement de la memoire
Liaison

2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle

3 Appels systeme

4 Conclusion

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 51 / 60


Appels systeme

Partage memoire
Les processus peuvent partager des morceaux de memoire grace a des
objets 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 peut
creer un nouvel objet (option O CREAT) ouvrir en lecture
(O RDONLY) ou lecture et ecriture (O RDWR). mode donne les droits
dacces a lobjet. La fonction renvoie un descripteur de fichier ou -1
en cas derreur.
int ftruncate(int fd , off t length );
fixe la taille dun fichier a length . Si le fichier est plus petit il est
agrandi, sinon, il est tronque.
int close( int fd );
ferme le descripteur de fichier.
int shm unlink(const char nom);
efface lobjet partage.

Ces objets memoire sont persistant cest a dire continuent dexister jusqua
etre efface ou jusqua lextinction du systeme.
Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 52 / 60
Appels systeme

Projection memoire
Un objet memoire ou un fichier peuvent etre projete dans la memoire
virtuelle du processus. Cela permet dacceder a son contenu comme un
tableau present 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 octret de lobjet fd a ladresse addr. Selon le la valeur de
prot ,
I MAP SHARED la projection est partagee, chaque modification sera
disponible pour les autres processus qui partagent cet objet.
I MAP PRIVATE la projection est privee, cest 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 5 53 / 60
Appels systeme

Exemple - I

Creation de lobjet partage


f d = shm open ( "./ partage .mem" , O RDWR| O CREAT , 0 6 0 0 ) ;
i f ( f d==1) {
p e r r o r ( " shm_open " ) ;
exit (1);
}

Lorsque cest une creation, la taille de lobjet cree est 0 il faut


lagrandir
r e s = f t r u n c a t e ( fd , n b c h a r ) ;
i f ( r e s == 1) {
p e r r o r ( " ftruncate " ) ;
exit (1);
}

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 54 / 60


Appels systeme

Exemple - II

Projection en memoire virtuelle


char partage ;
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 ) {
p e r r o r ( "mmap" ) ;
exit (1);
}

ecriture
strcpy (partage , "coucou");
lecture
fprintf (stdout , "lu %s\n", partage);

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 55 / 60


Appels systeme

Exemple - III
Liberation
r e s = munmap( p a r t a g e , n b c h a r ) ;
i f ( r e s == 1) {
p e r r o r ( " munmap " ) ;
exit (1);
}

// f e r m e t u r e du f i c h i e r
close ( fd ) ;

// s u p p r e s s i o n du nom p o u r l e p r o c e s s u s c r e a t e u r
r e s = shm unlink ( "./ partage .mem" ) ;
i f ( r e s ==1) {
p e r r o r ( " shm_unlink " ) ;
exit (1);
}

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 56 / 60


Appels systeme

Section critique

Les segments partages comme les variables partagees posent des


problemes dacces concurrent, il faut un mecanisme de synchronisation :
i n t s e m i n i t ( s e m t sem , i n t p s h a r e d , u n s i g n e d i n t v a l u e ) ;
s e m 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 wait ( s e m t sem ) ;
i n t sem close ( s e m t sem ) ;
i n t sem destroy ( s e m t sem ) ;

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 57 / 60


Appels systeme

Segments

demarrage dun 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 / ecriture


pour 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 5 58 / 60


Conclusion

Conclusion

La memoire est lune des ressource principale.


I Probleme dorganisation des donnees.
I Probleme dutilisation 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 5 59 / 60


Conclusion

A retenir

Mecanisme de pagination :
I fonctionnement ;
I interet ;
I amelioration (TLB, pool de page libre, . . .)
Algorithme de remplacement de page.
Programmation :
I droit sur les segment ;
I partage ;
I mapping de fichier.

Fabien Rico (Univ. Claude Bernard Lyon 1) Gestion de la memoire seance 5 60 / 60

You might also like