Allocation de mémoire pour le noyau

Le VMM : Virtual Memory Manager

Le vmm est la couche bas niveau de l'allocateur. C'est elle qui va s'occuper de regrouper plusieurs pages virtuelles contiguës en une seule entité dans laquelle on va pouvoir gérer l'allocation de plus petits objets (avec les slabs).

L'objectif du vmm va donc de gérer des ranges (intervalles) de pages physiques en les marquant comme libres ou occupées, comme toujours.

Allouer un range

L'allocation utilisée est de type first fit, ce qui veut clairement dire qu'on recherche le premier emplacement en mémoire qui convienne lorsqu'on en recherche un d'une certaine taille.

Lorsqu'on trouve cet emplacement, deux cas peuvent se présenter :

Insertion de range

Initialiser les ranges

On devra ensuite initialiser toute la mémoire avec les fonctions développées pour indiquer au système quelles sont les zones utilisables et celles qui ne le sont pas.

La chose à laquelle il faudra notamment faire le plus attention sera par exemple de protéger certaines zones de la mémoire physique en les marquant comme occupées et inutilisables. Ainsi, on devra prendre garde à marquer occupées :

Initialisation des zones mémoire