You are on page 1of 21

Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige

Monoprogrammation Multiprogrammation

Systmes dExploitation
Gestion de la mmoire Didier Verna
didier@lrde.epita.fr http://www.lrde.epita.fr/didier

Pagination Segmentation

1/25

Table des matires


Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Gnralits Allocation contige Monoprogrammation Multiprogrammation Pagination Segmentation

Pagination Segmentation

2/25

Quest-ce que la mmoire ?


Zone de stockage adressable
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Point de vue mmoire


Source inconnue : compteur programme, indexation etc. Utilisation inconnue : instructions, donnes etc.

Point de vue programme


Adresses symboliques : variables, fonctions etc. Adresse de chargement a priori inconnue Mmoire partage

Pagination Segmentation

Point de vue systme


Grer la hirarchie de mmoire caches . . . disques

4/25

Niveaux dadressage
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Adresse symbolique : manipule au niveau du programme Adresse logique : gnre par le CPU Adresse physique : emplacement mmoire rel M MU (Memory Management Unit) : dispositif de liaison dadresse

Pagination Segmentation

5/25

Liaison dadresse
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Problme
Adresses symboliques = adresses physiques quel moment fabriquer une adresse physique ?

Solutions
Compilation : Code absolu Adresse de chargement connue. Exemple : command.com. Chargement : Code translatable Adressage relatif. Excution : Code dynamique Lemplacement du programme peut varier dans le temps. Ncessite un matriel spcial.

Pagination Segmentation

6/25

Techniques de haut niveau


Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Recouvrements : (overlays) charger un processus par tranches de code indpendantes. Niveau utilisateur. Chargement dynamique : charger le code ncessaire uniquement quand on en a besoin. Niveau utilisateur. dition de liens dynamique : bibliothques partages. Swapping : dplacement de processus entre mmoire et mmoire auxiliaire (disques). Coteux en commutation.

Pagination Segmentation

7/25

Monoprogrammation
Mainframes, Palm et systmes embarqus, MS-DOS
Systmes dExploitation Didier Verna E PITA Gnralits

RAM User Program

ROM Operating System

ROM Device Drivers (BIOS) RAM

0xFF..

RAM User Program


Allocation contige
Monoprogrammation Multiprogrammation

Pagination Segmentation

RAM Operating System

RAM Operating System 0x00

9/25

Multiprogrammation & partitions xes


OS/MFT sur OS/360
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Partition 4

Partition 4

Partition 3

Partition 3

Pagination Segmentation

Partition 2

Partition 2

Partition 1 Operating System

Partition 1 Operating System

10/25

Localisation et protection
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Modication du code : (OS/MFT, dition de liens) ncessite de connatre les mots modier. Ne rsoud pas le problme de protection. = Blocs de 2kB protgs par un code de 4 bits (PSW). Par M MU : (CDC 6600, Intel 8088)
registre limite registre de translation
adresse physique

Pagination Segmentation

adresse logique

UC

<

oui non

mmoire

droutement

= Commutation de contexte plus coteuse.


11/25

Multiprogrammation & partitions dynamiques


Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Principe
Une partition mmoire par processus Allocation / libration de la mmoire en fonction de lordonnancement Idem pour le swapping

Implmentations
Bitmap : 1 bit par zone mmoire (kB) indiquant si la zone est libre ou occupe. Attention la taille des zones

Pagination Segmentation

Avantages : simple, taille du bitmap connue Inconvnients : lent

Listes chanes : zone libre / occupe, adresse de dbut et longueur. Tri par adresse, taille, listes distinctes de processus, trous. Listes doublement chanes.

12/25

Politiques dallocations
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

First-Fit : premier trou sufsant. Rapide. Next-Fit : idem, mais recherche partir de lemplacement prcdent. Un peu moins bon. Best-Fit : trou le plus petit possible. Moins performant. Worst-Fit : trou le plus grand. Bof. Quick-Fit : maintient de listes par tailles frquentes. Rapide pour la recherche, lent pour la dsallocation. Remarque : attention aux politiques de tri des listes.

Pagination Segmentation

13/25

Fragmentation
Apparition de zones inoccupes dans la mmoire
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Types
Fragmentation externe : espace sufsant pour lallocation dun nouveau processus, mais non contigu Fragmentation interne : allocation volontaire de zones inoccupes pour diminuer le travail de gestion de la mmoire

Pagination Segmentation

Compactage
Dfragmentation de la mmoire par translation des processus (code dynamique) Stratgies de compactage difciles trouver, lenteur

14/25

Pagination
Allocation de zones de mmoire non contiges pour un mme processus
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Cadres de page : mmoire physique dcoupe en zones de taille xe Adresse logique : numro de page + dplacement dans la page Table de pages : liaison entre numro de page et cadre de page (une table par processus) Taille des pages : puissance de 2

Pagination Segmentation

16/25

M MU pour la pagination
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

adresse logique

adresse physique

UC

mmoire

Pagination Segmentation

table de pages

17/25

Caractristiques
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Pas de fragmentation externe, mais fragmentation interne Petites pages = moins de fragmentation Grandes pages = commutation moins coteuse Impossible par dnition daccder une page interdite Mcanismes de contrle : pages (in)valides, en lecture, criture, excution etc. Implmentation du partage de la mmoire plus facile Taille moyenne des pages : 2 4 Ko

Pagination Segmentation

18/25

Support matriel
La pagination doit tre rapide (ns)
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Registres ddis : possible seulement pour des petites tables (ex. DEC PDP-11 : adresse 16 bits, pages de 8ko = 8 entres). Mmoire principale : un unique registre PTBR (Page Table Base Register). Surcharge de commutation de contexte faible, mais temps daccs double. Registres associatifs : T LB (Translation Look-Aside Buffers). Fonctionne comme un cache de la table de pages (ex. Motorola 68030 : T LB 22 entres, i486 : 32 entres, taux de prsence de 98%).
Gestion logicielle des T LB : par le systme au lieu du M MU (Architectures RISC : Sparc, MIPS, Alpha). Acceptable pour des T LB assez grands (64 entres). Simplie le M MU.

Pagination Segmentation

19/25

Pagination plusieurs niveaux


Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Exemple (courant) : adressage sur 32 bits + pages de 4 Ko. Une table de page contient alors 1 million dentres, soit 4 Mo de mmoire ! ! viter
allouer autant despace en contigu charger lintgralit des tables de page en mmoire

Pagination Segmentation

Pagination de la table de page


SPARC : pagination 32 bits trois niveaux Motorola 68030 : pagination quatre niveaux

Problme : trois ou quatre indirections chaque fois que lon doit rcuprer un octet.

20/25

Table de pages inverse


Autre solution au problme de la taille des tables de pages
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Principe
Une unique table de pages pour tout le systme, indexe par les cadres de page Chaque entre contient un numro de processus et un numro de page virtuelle

Problmes
Liaison dadresse plus complique (parcours de la table). = T LB, tables de hash par adresse virtuelle. Partage de pages plus difcile implmenter au niveau systme.

Pagination Segmentation

Utilisation actuelle : IBM, HP, de plus en plus darchitectures 64 bits.

21/25

Segmentation
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Segmentation vs. Pagination


Pagination : obtenir un espace dadresse linaire aussi grand que souhait. = Dimension 1 Segmentation : obtenir plusieurs espaces dadressage distincts (segments). = Dimension 2 (ex. compilateur + pile, source, table de symboles, ASTetc.)

Pagination Segmentation

Principe
Segment = unit logique (niveau utilisateur) Taille variable, mais indpendante des autres segments Facilit de partage (ex. bibliothques partages) Facilit de protection (ex. lecture, criture. excution)

Implmentation
Table de segments : ide analogue la pagination Adresse logique : nom du segment + dplacement Segmentation et pagination combine
23/25

Segmentation et Pagination
Exemple : Intel Pentium
Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

16K segments de 4 Go par processus, dont :


8K segments privs (une table de descripteurs locale LDT par processus) 8K segments partageables (une table de descripteurs globale GDT)

Slecteur de segment (16 bits) + offset (32 bits) = Adresse linaire (32 bits)
13 Index 1 G/L DT 2 Ring Descriptor Base Address Limit Other fields 32 Offset

Pagination Segmentation

32 bits linear address


24/25

Intel Pentium (suite)


Systmes dExploitation Didier Verna E PITA Gnralits Allocation contige
Monoprogrammation Multiprogrammation

Pagination : Pagination 2 niveaux. Pages de 4Ko.

10 Directory

10 Page
Userland

12 Offset

Protection : 4 anneaux diffrents. Progression en profondeur par portes / guichets.

DLLs Syscalls Kernel 0 1 2 3

Pagination Segmentation

25/25

You might also like