Professional Documents
Culture Documents
seance 5
2 Memoire virtuelle
Pagination
Remplacement de pages
Exemples dalgorithmes
Multiprogrammation et memoire virtuelle
3 Appels systeme
4 Conclusion
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.
Taille
Cercle vertueux ?
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
Algorithmes dallocation
Algorithmes dallocation
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
I Importance de f .
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
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
Memoire virtuelle
Pile, donnee, . . .
2Go HAL + SE
Donnees systeme
Zone utilisateur
Code et donnees
du processus Zone utilisateur
Tas
Code
interdit
Pagination
rep index dans le repertoire des pages, page index dans la table des
pages.
Remarque
Avantage de la pagination
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
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
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.
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).
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
Algorithme optimal
Lalgorithme Optimal necessite de prevoir lavenir. Il retire la page non
reutilisee ou qui sera reutilisee le plus loin dans le futur.
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.
Algorithme LRU
La page sortante est celle qui na plus ete utilisee depuis le plus longtemps.
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
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
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.
On complique un peu
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
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).
Ecroulement
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 :
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
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
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
Exemple - II
ecriture
strcpy (partage , "coucou");
lecture
fprintf (stdout , "lu %s\n", partage);
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);
}
Section critique
Segments
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.