Allocation de mémoire pour le noyau
Principe ?
Comme rappelé dans l'introduction, il est évident qu'on a bien plus souvent besoin d'allouer des petites zones mémoire que des grosses. Il est donc indispensable de trouver un moyen de faire ces "petites" allocations au sein de zones plus grandes.
On utilise ici une implémentation dite de type slab
. Ce n'est pas la plus simple, mais c'est de loin la plus utilisée.
On fonctionne avec deux niveaux d'allocation :
- le Virtual Memory Manager qui va s'occuper d'allouer des ensembles de pages virtuelles contiguës (rappel : de taille 4ko) ;
-
les slabs qui vont, au sein de cet espace virtuel, contenir une liste d'objets de taille fixe.
Ainsi, en gérant des slabs capables de gérer chacun une taille fixe différente, on obtient un système capable d'allouer de la place pour toutes les tailles d'objets nécessaires.