[SOS] Virtual Memory Manager

Christophe Lucas clucas at rotomalug.org
Mer 3 Aou 10:53:39 CEST 2005


KAISER Edouard (edouard.kaiser at gmail.com) wrote:
> Bonjour à tous !
> Encore désolés pour le dérangement, mais il y a certains points qui
> sont flous dans ma tête en ce qui concerne la gestion et allocation de
> mémoire pour le Noyau.
> SOS permet si j'ai bien compris d'allouer des "régions" dans la
> mémoire. Cependant j'ai du mal à saisir l'utilité de ces régions que
> vous appellez "range".

Ceux sont des zones de mémoire virtuelles contigues de 4Ko ici
permettant de stocker des objets de plus de 4Ko. Ce qui est utile pour
stoker des zones de programme somme .rodata(bof bof ;)), .text, ...
(Enfin c'est l'idée que j'en ai).

> Les régions contiennent elles les caches qui eux meme contiennent les
> slabes qui pour finir contiennent une liste d'objet ?
> J'ai du mal à saisir la hiérarchie et ce qu'il se passe réellement. En
> fait le concept de la pagination me perturbe, surement pour rien, mais
> bon...

En ce qui concerne la pagination. Imagines que virtuellement tu possèdes
4Go de mémoire, et que les adresses virtuelles sont mappées sur des
adresses physiques. Et si elles ne sont pas mappées, alors une exception
est levées, et une routine devra faire son travail pour récupérer la
page dans la zone d'échange disque/mémoire, sinon stopper l'exécution du
processus.

> Imaginons que SOS n'active pas la pagination et se contente de la RAM
> disponible, nous avons donc une adresse linéaire qui devient
> directement une adresse physique (si la base du segment dans la GDT
> est à 0 bien sur).
> Le VMM va donc découper la RAM en régions ?
> Ces régions qui seraient donc logiquement plus grande que 4Ko, vu
> qu'on gerait deja la mémoire en page de 4Ko, contiendraient les caches
> caractérisés par une taille d'objet précise. Et on retrouverait dedans
> les slabs.
> Pourquoi dans les régions ne pas directement stockées un slab qui est
> déja une structure qui contient une liste d'objet de taille précisé
> dans la description du slab ?

C'est dit dans l'article.

	http://sos.enix.org/wiki/upload/SOSDownload/sos-texte-art5.pdf

> Les objets qui sont dans les slabs, sont ils le résultat cpncret d'une
> demande d'allocation ?

Oui.

> Je veux dire par la, si je demande un "malloc"(2048), va t il y avoir
> dans le slab caracterisé par une taille d'objet de 2048, un "objet"
> qui va etre crée dans la liste et dont on me renverra l'adresse pour
> que je puisse l'utiliser ?
> Comme vous voyez c'est assez flou dans ma tete, j'essaye d'éclaircir
> mais dur dur :(
> Merci à ceux qui pourront m'aider  et ceux qui ont pris le temps de me lire !

Euh en espérant avoir pu t'aider. Mais je pense que les auteurs sont
bien plus à même et plus compétent que moi pour te répondre.

				- Christophe (clucas at rotomalug.org)


Plus d'informations sur la liste de diffusion Sos