Professional Documents
Culture Documents
pagination et
segmentation
pagination et
segmentation
Organisation de la memoire physique
Pagination Pagination
Segmentation Segmentation
Segmentation Segmentation
Dans ce modele, la memoire du processus nest pas fragmentee.
Memoire paginee La memoire principale se divise en deux parties : Memoire paginee
segmentee segmentee Si la memoire ne contient quun (ou un nombre restreint) de
I lune est destinee au systeme dexploitation et contient
Memoire virtuelle Memoire virtuelle
processus, ils seront le plus souvent dans lattente dune
I une pile dinterruption systeme, entree-sortie. Donc le processeur sera inactif.
I la table des processus,
I le code du systeme (noyau, etc.), Ce probleme peut se traiter en installant un systeme de file
dattente et en permutant les processus actifs (cf. cours sur
Cette partie est toujours residente en memoire ;
lordonnancement).
Ceci implique de partitionner la memoire (car sinon, il faudrait
I lautre est destinee aux processus en cours dexecution
charger les processus en memoire depuis le disque).
Image dun processus en memoire un autre processus Meme en faisant des partitions de tailles variables, on tombe sur
Pile dexecution (pass. param.) Pile dexecution (pass. param.) les problemes suivants :
tas (zone malloc) tas (zone malloc)
I comment sarranger pour que le processus recoive exactement
donnees non initialisees (a 0) donnees non initialisees (a 0)
donnees initialisees donnees initialisees la taille necessaire sans gaspillage ?
code utilisateur code utilisateur I comment un programme peut-il adresser de la memoire dans
ce cadre ?
Segmentation Segmentation
Cette abstraction est invisible a lutilisateur mais elle a des
Memoire paginee
segmentee
La memoire est partitionnee en pages de taille fixe et petite. Memoire paginee
segmentee consequences sur la gestion dun vaste espace memoire.
Memoire virtuelle
Chaque page possede un numero physique et comme pour un fs, Memoire virtuelle
los maintient une liste des pages libres. Supposons que la taille dune page soit de 128 sizeof(int) et quun
Un processus est divise en pages ayant un numero logique et une tableau soit stocke ligne par ligne :
table des pages le constituant est maintenu par los. tab[0][0] tab[0][1] ... tab[0][127] 1 page
ladresse dun octet est defini par sa page et son offset. .. .. ..
On peut ainsi convertir une adresse relative au processus en une . . ... . dautres
adresse absolue pour los : tab[127][0] tab[127][1] ... tab[127][127] la derniere
Les deux codes suivants ne sont pas equivalents en termes de
Adresse logique Adresse physique
0
1
13
45 gestion memoire (le premier peut necessiter des swaps).
2 35
page num offset 3 43 page num offset
2 30 35 30 int tab[128][128] ; int tab[128][128] ;
etc. for(int j = 0 ; j<128 ; j++) for(int i = 0 ; i<128 ; i++)
Table de
for(int i = 0 ; i<128 ; i++) for(int j = 0 ; j<128 ; j++)
correspondance tab[i][j] = 0 ; tab[i][j] = 0 ;
des pages
/* parcours les pages */ /* reste dans une page */
Segmentation Segmentation
segments
Cette memoire virtuelle permet aussi un mecanisme de protection :
Repertoire
des
chaque processus a son propre espace memoire qui peut etre
pages Table Table Table protege par des droits.
Segmentation des .... des .... des
pages pages pages Le principal defaut de cette astuce est que lacces a un disque est
lent au point que lon peut avoir un ecroulement : un processus
secroule lorsquil passe plus de temps a paginer qua sexecuter.
Memoire vive :
pagination et
segmentation
Pagination a la demande
Pagination
Dans ce mode, la page dun processus nest chargee en memoire
Segmentation
que lorsque cest necessaire.
Memoire paginee
segmentee fs presente des fichiers lies a la memoire
Memoire virtuelle
I /dev/kmem memoire virtuelle vue comme un peripherique
I /dev/mem memoire physique vue comme un peripherique
I /dev/drun memoire de pagination