[Kos-dev] Gestion de la memoire virtuelle : pour y voir plus clair
d2
kos-dev@enix.org
10 Jul 2001 09:13:45 +0200
Hello,
Tout ca me parait clair. Ca meriterait de completer le draft-0, voire
de donner naissance a un draft-1.
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@ifrance.com> writes:
Thomas> fichier incrimine dans cette page. Si le mapping est de
Thomas> type MAP_SHARED (partage entre les fork()), la premiere
Thomas> tentative d'ecriture provoquera un COW (Copy on Write),
Thomas> les autres tentatives d'ecriture se feront sur la meme
Thomas> page quelque soit le thread realisant l'ecriture. Probleme
Thomas> : comment gerer la consistence dans ce cas la ?
Avec ton mecanisme d'"inverse lookup" des pages virtuelles a partir
des pages physiques (cf fin du mail), ca doit pas trop poser de
probleme.
A noter que si, a partir d'une page physique, on ne remonte que vers
des pages virtuelles MAP_SHARED, on n'a meme pas besoin de faire de
COW : il suffit de passer les pages virtuelles associees en mode
"ecriture autorisee" des le premier page fault.
A noter aussi qu'on doit se poser la meme question de la consistance
lorsqu'une page passe de MAP_SHARED a MAP_PRIVATE dans une des teams :
il faut dans ce cas passer les pages virtuelles associees a la page
physique en read-only et le prochain acces en ecriture provoquera un
COW.
Thomas> Voici son boulot : pour chaque page physique, il parcoure
Thomas> la liste de ses mappings en memoire virtuelle, si la page
Thomas> physique a ete accedee, elle est ramenee au debut d'une
Thomas> liste des pages physiques. Sinon elle reste a sa place. Ce
Cote vocabulaire, ca s'appelle "mecanisme LRU" (Last Recently Used).
Thomas> Le swapper pourra prendre en compte le nombre d'acces a
Thomas> des pages (nombre de fois que le bit Accessed a ete mis a
Thomas> 1) pour permettre d'optimiser la repartition des pages
Thomas> entre le swap et la memoire physique.
Tu veux dire que ce serait un 2eme mecanisme (appele "aging" si je ne
m'abuse) redondant avec le LRU ?
Thomas> Pour que le swapper puisse fonctionner, et qu'on puisse
Thomas> demapper et remapper des pages physiques en virtuel, on va
Thomas> maintenir une liste chainee des mappings d'une page
Thomas> physique.
Ca me parait correct.
Pour un eventuel draft-1, tu pourrais introduire a quoi sont relatifs
ces segments : la def des "address spaces". Peut-etre, pour situer les
choses, le schema figure 1 page 3 de SunOS Virtual Memory
Implementation est une bonne intro (juste le "Unix System Calls and
Services" pas tres clair => preciser qu'il s'agit de teams).
Sinon, peut-etre quelques remarques sur la terminologie : definir la
notion de mapping anonyme. Et la notion de backing store utile pour
les decision de swapin/out.
Bonne journee,
--
d2