# La pagination

![](https://books.snowcode.ovh/uploads/images/gallery/2024-01/2024-01-03-13-07-09-screenshot.png)

La pagination permet d'avoir un espace adressage en mémoire physique non
contigu. Elle nécessite toute fois une modification du MMU pour intégrer
la *table des pages*. Elle va avoir une "table des pages" pour savoir où
sont les morceaux. Cette méthode est utilisée par tous les systèmes
d'exploitations actuels.

### Fonctionnement

On va donc diviser la mémoire logique en blocs de taille fixe (les
**pages**), on va faire de même avec la mémoire physique (que l'on va
appeler les **frames**). Ainsi une page correspond à une frame. De ce
fait, la **table des pages** va lier chaque page à une frame. L'espace
de stockage pour le swapping est également découpé en blocs de même
taille que les frames.

Lorsqu'un processus démarre, on va donc calculer la taille nécessaire en
nombre de pages, ensuite, on va regarder le nombre de frames
disponibles. S'il y a suffisamment de frames disponibles le processus
peut alors démarrer, sinon le processus ne peut pas démarrer. Par
exemple, si on a un processus nécessitant 10 octets et que chaque page
fait quatre octets, cela nécessitera 3 pages. Sauf que s'il n'y a que 2
frames disponibles le processus ne pourra pas démarrer.

Les frames sont gérées par le système d'exploitation, ce dernier va
garder la liste des frames libres et occupées et le nombre de frames
disponibles. Le SE doit aussi mettre en place une protection pour
empêcher un processus de dépasser son espace d'adressage.

### Effet sur la fragmentation

Ainsi, la fragmentation externe n'existe plus, car bien que l'adressage
soit vu comme contigu au niveau du programme, elle ne l'est pas au
niveau physique.

La fragmentation interne, elle sera d'en moyenne 1/2 page par processus,
comme on ne peut pas assigner des demi-frames, donc si un processus
nécessite 10 octets, mais qu'une frame fait 4 octets et que chaque page
correspond à une frame (en conséquence chaque page fait 4 octets
également), on devra alors assigner 3 pages pour le processus de 10
octets, ce qui laisse ensuite deux octets (soit une demi-page) non
utilisée.