[SOS] Virtual Memory Manager

KAISER Edouard edouard.kaiser at gmail.com
Mar 4 Oct 19:07:25 CEST 2005


Salut à tous !
Je reprend ce topic afin de pas trop polluer la mailing list car ça ne
concerne pas directement SOS puisque ici je m'intéresse au modèle
multisegment.
En fait j'ai du mal à trouver un moyen d'allouer dynamiquement la
mémoire, je me suis dis que certains pourraient avoir des idées, ou
des exemples d'OS multi segment et la manière dont ils gèrent la
mémoire.
Voila un peu ce qui m'est passé dans la tête.

Un segment possède une taille fixe et décrit donc une zone précise de
la mémoire.
Lorsque je crée un processus je lui donne un emplacement en mémoire
contigue, de la taille dont ont besoins ses données et son code.
Si ce processus souhaite allouer de la mémoire, plusieurs choses :
- On pourrait agrandir la limite du descripteur de segment : problème
on peut écraser des données qui suivent la mémoire décrite par ce
descripteur, mémoire qui peut appartenir à un autre processus : donc
impossible a priori comme solution.
- On pourrait créer un nouveau descripteur de segment dans la LDT du
processus dont la limite serait la taille de la mémoire que l'on
souhaite allouer et qui décrirait donc un emplacement libre de cette
taille en mémoire vive : Problème, nous avons donc un nouveau segment
de données. Comment faire pour que le processus puisse utiliser ce
segment ? Cela implique un changement de DS, enfin cette solution me
semble irréalisable, je ne saurai meme pas comment la gérer, mais me
semble la plus propre.
- Solution trés crade et absolument pas performante : On recherche un
emplacement mémoire contigu et assez grand pour contenir le processus
+ la taille de la mémoire qu'il souhaite allouer, de ce fait on aurait
tout dans le meme segment. C'est une solution absurde mais c'est la
seule qui me semble fonctionelle oO

Enfin voila, je serai curieux d'avoir vos avis sur l'allocation de
mémoire sur un modèle multisegment ! =)
Merci.
--
KAISER Edouard.
Wiki-Blog : http://kaiser.edouard.free.fr/
BesOS : http://besos.mtp.epsi.fr/


Plus d'informations sur la liste de diffusion Sos