next up previous contents
suivant: kfree monter: Gestion de heap précédent: Gestion de heap   Table des matières

kalloc

L'allocation de pages est un mécanisme puissant, mais qui oblige à toujours savoir à quel endroit on veut mapper des pages. On voudrait pouvoir se débarasser de cette obligation, c'est à dire d'avoir une fonction qui prend en paramètres la taille de la zone que l'on veut allouer, et qui renvoie un pointeur vers cette zone. La fonction kalloc va gérer ce mécanisme.

On réserve une partie de l'espace d'adressage kernel pour cet usage, appelée le heap. Chaque fois que l'on va appeler la fonction kalloc, on va aller chercher un emplacement libre suffisemment grand dans le heap. On va éventuellement allouer les pages correspondantes, puis renvoyer un pointeur vers cette zone.

On a placé le heap en 0x20000000. On commence ainsi l'allocation à cette adresse, et on avance jusqu'à trouver une zone libre.

Chaque zone mémoire est précédée d'une structure de ce type:

précédent suivant état

Lors d'une demande d'allocation, l'algorithme va donc être le suivant:


next up previous contents
suivant: kfree monter: Gestion de heap précédent: Gestion de heap   Table des matières
2003-03-30