[Kos-dev] Synchro VMM : premiers essais

Thomas Petazzoni thomas.petazzoni at enix.org
Thu Jun 24 15:21:02 CEST 2004


Salut,

On Thu, 24 Jun 2004 14:22:21 +0200
Thomas Petazzoni <thomas.petazzoni at enix.org> wrote:

>  - Comment ça va se passer avec les #PF. J'avais déjà posté un mail à
>  ce
> sujet, en particulier en ce qui concerne les données swappées ou dans
> des fichiers qu'il faut rapatrier en mémoire. On avait conclu qu'il
> fallait garder une liste des requêtes à servir, relâcher le lock, au
> bout d'un moment servir la requête d'I/O et relancer la tâche. Comme
> ça, si pendant ce temps là un autre thread du même espace d'adressage
> fait un #PF sur la même page, on va pas charger deux fois la même page
> du disque. Par contre, si jamais c'est une région anonyme, on a juste
> à allouer la page et à mettre des zéros, vous croyez qu'on peut
> conserver le sémaphore pendant ce temps là ?

J'ai regardé le code source de Linux pour les allocations anonymes. Déjà
un truc drôle, c'est que si jamais c'est une faute en lecture, ils font
pointer la page virtuelle vers une page physique spéciale, la ZERO_PAGE.
Comme ça, tant que y'a pas de faute en écriture, on est pas obligé de
gaspiller de la mémoire physique (si j'ai bien compris).

Ensuite, si c'est une faute en écriture en fait, ils relachent le lock.
Ensuite ils allouent la page tout ça, font leur bazar. Et puis ensuite
ils reprennent le lock, regardent si entre temps la page virtuelle a été
mappée par un autre thread. Si non, ils mappent la page physique qui
vient d'être allouée, sinon ils la libèrent et basta.

J'ai bon ?

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org 
http://thomas.enix.org - Jabber: kos_tom at sourcecode.de
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://the-doors.enix.org/pipermail/kos-dev/attachments/20040624/153107e9/attachment.pgp


More information about the Kos-dev mailing list