[SOS] Virtual Memory Manager

Thomas Petazzoni thomas.petazzoni at enix.org
Mar 9 Aou 14:52:44 CEST 2005


Salut,

[ Peux-tu configurer GMail pour qu'il ne mette pas n'importe quoi dans 
le champ Reply-To des mails que tu envoies à la liste. Voir 
http://linuxfr.org/~pterjan/17376.html pour la manipulation à effectuer. 
Merci ! ]

KAISER Edouard wrote:

> J'ai un peu cogité à tous ça et surtout le concept de la mémoire
> virtuelle : deux processus peuvent utiliser une même adresse qu'on
> désignera virtuelle mais qui pointeront vers deux adresses physiques
> différentes via une table de traduction.

Tout à fait. L'idée de base est très simple, ce sont les conséquences 
(file mapping, demand paging, swap, identity mapping, etc.) qui sont 
parfois un peu difficile à ingurgiter au départ.

> Personnellement je n'active pas la pagination, je me contente donc de
> la segmentation, donc la gestion va vraiment etre différente de SOS.
> De ce fait, arréter moi si je me trompe, tout mon système de gestion
> des processus sera basé sur les mécanismes de segmentation que me
> propose l'archx86.
> J'ajouterais et insérer des descripteurs selon les processus qui
> doivent etre élu ou stopé non ?
> Le mécanisme de traduction se fera par la MMU qui a partir des
> selecteurs de descripteurs de segment pourra transformer l'adresse
> virtuelle en adresse physique selon la base et la limite du
> descripteur de segment pointé ?
> Enfin voila, j'ai juste besoins de savoir si je vois juste, et comment
> je dois envisager cette partie en sachant que je ne souhaite pas me
> servir de la pagination ! =)

Il y a plusieurs problèmes avec les segments:

  - Tout d'abord, un segment en mémoire virtuelle correspond forcément à 
un segment de mémoire physique contigue. Donc si tu as un segment de 16 
Mo en virtuelle, il y a un segment de 16 Mo en physique. Avec une 
granularité aussi grosse, les problèmes de fragmentation de la mémoire 
physique risquent d'arriver très très rapidement.

  - D'autre part, si il n'y a pas de pagination, comment souhaites-tu 
faire fonctionner le demand paging par exemple ?

  - Le mécanisme des segments est assez particulier à x86. Sur d'autres 
architectures, c'est le mécanisme de pagination qui est le plus courant.

En fait, avec les segments, tu n'as quasiment aucun avantage de la 
mémoire virtuelle (granularité fine, possibilité de faire du chargement 
à la demande, du swapping, etc.) et tous les inconvénients (structure de 
données à manipuler pour l'OS).

Ceci étant dit, j'ai une vision assez formatée par Linux de la façon 
dont fonctionne un OS. Il est tout à fait possible de faire un OS sans 
mémoire virtuelle, mais ce n'est plus tout à fait le même objectif.

N'hésites pas à demander des précisions si besoin.

Bonne journée,

Thomas
-- 
Thomas Petazzoni
thomas.petazzoni at enix.org


Plus d'informations sur la liste de diffusion Sos