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.