Вы находитесь на странице: 1из 2

Memoire vive : Memoire vive :

pagination et
segmentation
pagination et
segmentation
Organisation de la memoire physique
Pagination Pagination

Segmentation Segmentation

Memoire paginee Memoire paginee


segmentee segmentee

Memoire virtuelle Memoire vive : pagination et Memoire virtuelle


Sur une architecture 32 bits, la memoire physique peut etre
consideree comme une suite doctets. A chaque octet est associe
segmentation un numero de 0 a 232 1.

Remarquez que lon peut adresser environ 4 gigaoctets de memoire


ce qui est plus que nen possedent la plupart des machines
Licence miage Universite Lille 1 actuelles. Une partie de cette memoire est virtuelle (cf. la suite).
Pour toutes remarques : Alexandre.Sedoglavic@univ-lille1.fr

La gestion de la memoire vive presente des analogies avec la


Semestre 6 2012-2013 gestion de la memoire persistante.

V-2 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdfV62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdf

Memoire vive : Memoire vive :


pagination et
segmentation
Repartition de la memoire entre systeme et pagination et
segmentation
Adressage monoprogrammation et
processus description des contraintes
Pagination Pagination

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 ?

V62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdfV62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdf

Memoire vive : Memoire vive :


pagination et
segmentation
Pagination : une abstraction au niveau pagination et
segmentation
Pagination : consequence sur la
materiel programmation
Pagination Pagination

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 */

V62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdfV62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdf


Memoire vive : Memoire vive :
pagination et
segmentation
Segmentation : une abstraction semantique pagination et
segmentation
Memoire paginee segmentee
Pagination Pagination

Segmentation Segmentation

Memoire paginee Memoire paginee


Pour acceder a un octet dans un segment, on utilise une adresse
segmentee La segmentation permet au programmeur de voir un processus en segmentee logique. Cette adresse est composee du numero du segment et
Memoire virtuelle
memoire sous la forme de plusieurs espaces dadressages : les Memoire virtuelle
dun offset.
segments.
Citons comme exemple dadresse logique, ladresse de la prochane
1. chaques composantes du processus (pile, code, tas, donnees, instructions a executer dans un processus :
etc.) peut avoir son propre segment ; I le registre EIP (Instruction Pointer) contient loffset de la
2. on peut mettre des droits sur lacces aux segments ; prochane instruction a executer ;
3. la taille des segments est variable sous laction de los (tas, I Le registre CS (Code Segment) contient le numero du
pile) ; segment memoire dans lequel sont stocke les instructions
4. un segment peut etre partage par plusieurs processus. assembleur du code a executer.
Voir codage du segment ci-dessous.
Un segment setend sur plusieurs pages et le materiel propose un
mecanisme de traduction dadresse relative en adresse physique.

V62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdfV62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdf

Memoire vive : Memoire vive :


pagination et
segmentation
pagination et
segmentation
Memoire virtuelle
Pagination Pagination
Pagination
Segmentation Segmentation

Memoire paginee Memoire paginee


segmentee adresse logique adresse lineaire
segmentee On a souvent besoin de plus de memoire vive que nen disposent
Memoire virtuelle Segment offset
memoire
Memoire virtuelle nos machines. Los met a disposition de la memoire virtuelle par
+
Repertoire page offset
principale le biais dune partie du fs qui est utilisee pour stocker des donnees
+ en attente de reintegrer la memoire (le fs devolu a cette tache est
Table
le swap).
des

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.

V62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdfV62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdf

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

I swap : une partie du disque contenant une memoire virtuelle


et une commande externe du shell vmstat donnant des statistiques
sur entre autre la memoire virtuelle :
procs ---------memory--------- --swap-- ---io-- --system-- --cpu--
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 60456 31576 224656 0 0 6 3 169 250 2 0 98 0
0 0 0 60444 31576 224656 0 0 0 0 143 135 0 0 100 0
0 0 0 60428 31592 224656 0 0 0 40 159 235 0 0 100 0

V62 (28-01-2011) www.fil.univ-lille1.fr/sedoglav/OS/Cours04.pdf