Gestion de la mmoire
D. Bchet
Denis.Bechet@univ-nantes.fr
Universit de Nantes Facult des Sciences et Techniques 2, rue de la Houssinire BP 92208 44322 Nantes cedex 3, France http://www.sciences.univ-nantes.fr/info/perso/permanents/bechet
Mmoire
Ressource importante Ressource hirarchise mmoire cache : trs rapide, peu importante, gre par le matriel mmoire principale : rapide, importante, gre par le SE mmoire secondaire (disques durs) : lente, trs importante, gre par le SE Gestion par le gestionnaire de la mmoire du SE But : offrir un espace dadressage indpendant aux processus : la mmoire virtuelle
Mmoire virtuelle
Processus 1 Mmoire virtuelle Processus 2 Mmoire virtuelle Processus 3 Mmoire virtuelle Processus 4 Mmoire virtuelle
Systme dexploitation
Mmoire relle
Disque dur
Gestion de la mmoire
Type de gestionnaires Avec ou sans change avec la mmoire secondaire (swaping sur disque dur) Avec ou sans pagination Avec ou sans segmentation
Monoprogrammation
1 seul processus, pas dchange, pas de pagination : exemple MS-DOS
0xFFF... Programme utilisateur
Monoprogrammation
1 seul processus, pas dchange, pas de pagination Le SE charge le programme en mmoire puis lexcute appel systme EXIT : le SE reprend la main lorsque le programme se termine appel systme EXEC : le programme utilisateur demande au SE de charger et excuter un autre programme qui remplace le programme courant
Partitions de taille xe
Partitionnement priori de la mmoire en n zones (ventuellement de tailles diffrentes) plusieurs processus, pas dchange, pas de pagination exemple mainframe dIBM sous OS/360
Files dattente multiples 800K Partition 4 600K Partition 3 500K Partition 2 300K Partition 1 200K Systme dexploitation en RAM 0 Systme dexploitation en RAM Partition 1 200K 0 File dattente unique Partition 4 600K Partition 3 500K Partition 2 300K 800K
1111111 0000000 00000000 1111111 11111111 0000000 0000000 1111111 0000000 1111111 0000000 1111111 00000000 11111111 0000000 11111111 1111111 00000000 Processus 3 Processus 3 Processus 3 0000000 1111111 00000000 0000000 11111111 1111111 00000000 11111111 0000000 1111111 00000000 0000000 11111111 1111111 00000000 11111111 Processus 2 Processus 2 Processus 2 Processus 2 0000000 1111111 0000000 1111111 1111111 0000000 0000000 Processus 1 Processus 1 Processus 1 0000000 1111111 1111111 1111111 0000000 Processus 4 0000000 1111111 0000000 1111111 Systme Systme Systme Systme Systme
dexploitation en RAM dexploitation en RAM dexploitation en RAM dexploitation en RAM dexploitation en RAM
Le processus 1 est plac en attente sur le disque Ncessite un mcanisme de rallocation dynamique (registres base + limite)
Mmoire virtuelle
Pagination : adresse = numro de page + dplacement Segmentation : adresse = base dun segment + dplacement
Pagination
Indirection : adresse linaire adresse physique
Espace virtuel de 64K Adresses linaires X X X X X 7 X 5 6 3 X X 2 1 3 0 Pages virtuelles de 4K
Pages physiques de 4K
Mmoire relle de 32K Adresse physique 28K32K 24K28K 20K24K 16K20K 12K16K 8K12K 4K8K 0 4K
L3 Informatique - Systmes dexploitation - Gestion de la mmoire - Version 2008.0 p. 13/43
Pagination
Indirection : adresse linaire adresse physique MMU : memory management unit (unit de gestion mmoire) Table des pages : tableau donnant pour chaque page virtuelle : si la page virtuelle correspond ou non une page physique dans ce cas, le numro de la page physique les droits daccs (lecture/modication/excution) dautres informations: page accde, modie, etc
Pages physiques de 4K
Mmoire relle de 32K Adresse physique 28K32K 24K28K 20K24K 16K20K 12K16K 8K12K 4K8K 0 4K
Pagination
Indirection : adresse linaire adresse physique
Adresse physique 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0x3C31
0x6C31
0xD9B66C31
Statistiques
$ for in in a a a a a a a a a a a ; do ls -lR /usr > /dev/null & done [1] 4431 ... $ top top - 15:17:22 up 7:07, 1 user, load average: 14.86, 4.85, 1.77 Tasks: 107 total, 22 running, 85 sleeping, 0 stopped, 0 zombie Cpu(s): 72.5% us, 26.9% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.7% hi, 0.0% si Mem: 61852k total, 60624k used, 1228k free, 6148k buffers Swap: 88316k total, 12624k used, 75692k free, 4268k cached PID USER 4465 bechet 4482 bechet ... $ free PR 18 23 NI 0 0 VIRT RES SHR S %CPU %MEM 2988 1352 1932 R 17.7 2.2 3048 1416 1932 R 6.5 2.3 TIME+ COMMAND 0:09.65 ls 0:02.79 ls
shared 0
buffers 3660
cached 3084
Statistiques
$ cat /proc/1/status Name: init State: S (sleeping) SleepAVG: 90% Tgid: 1 Pid: 1 PPid: 0 TracerPid: 0 Uid: 0 0 Gid: 0 0 FDSize: 32 Groups: VmSize: 1408 kB VmLck: 0 kB VmRSS: 496 kB VmData: 148 kB VmStk: 4 kB VmExe: 28 kB VmLib: 1204 kB Threads: 1 ...
0 0
0 0
Page la demande
Pas dallocation non sollicite : seules les pages effectivement accdes par un processus sont places dans son espace virtuel Les pages correspondant au code et aux donnes dun programme ou dune librairie dynamique ne sont pas charges lors de linitialisation du processus (lors de lappel execve()) mais lorsque le processus y accde Un processus commence sa vie sans avoir de page physique associe son espace virtuel La premire opration dun processus consiste charger la page correspond au code de dmarrage du processus
Segmentation
Historiquement important mais peu utilis de nos jours o on prfre la pagination Adresse segmente = Numro de segment/Numro de registre de sgment + dplacement Segment = Adresse de base + Taille + Droit daccs Adresse physique = Adresse de base du segment + dplacement Valide si dplacement < Taille et les droits daccs sont respects
Intrts de la segmentation
Moins complexe que la pagination Permet le dplacement de la zone de mmoire physique correspondant un segment vers une autre zone (pour faire de la place, augmenter la taille dun segment) Ralisable (dans les CPU) avec des registres de segments contenant la base, la taille et les droits du segment Autorise la sparation des informations (code , donnes, pile) Simplie la gestion des librairies dynamiques si le matriel autorise lutilisation de nombreux segments en mme temps
L3 Informatique - Systmes dexploitation - Gestion de la mmoire - Version 2008.0 p. 40/43