[Kos-dev] Mapping anonyme vs mapping de /dev/zero

d2 d2 at enix.org
Tue Sep 30 22:57:20 CEST 2003



Hello,

Je continue de dépiler mes mails...

Thomas Petazzoni wrote:
> D'où mes questions :
>  * Quelle est la différence entre un mapping de /dev/zero et un mapping
> anonyme ?

Sur le fond (ie le comportement) je suis pas sûr qu'il y en ait une si
grosse que ça. A part au niveau de l'"explicititude" peut-etre : on mmap
/dev/zero pour faire explicitement un mapping anonyme (on n'a pas
vraiment d'autre choix). Par contre visiblement sur la "forme" c'est pas
la même chose.

Sous linux par exemple, quand il y a COW, ça génère un mmap anonymous
qui cette fois ne correspond pas a un mmap /dev/zero, mais continue de
correspondre au mmap du fichier initial, même après la différenciation
en mapping anonyme. Par exemple, avant le cow sur un mmap("/tmp/a"), j'ai :
40016000-40017000 rw-p 00001000 08:07 22         /tmp/a
Et après le COW (ie le mapping devient anonyme) :
40016000-40017000 rw-p 00001000 08:07 22         /tmp/a
(Evidemment, même comportement avec /dev/zero, mais c'est moins parlant).

Bref, mapping anonyme n'implique pas mmap("/dev/zero") sous linux, sinon
y'aurait marqué /dev/zero au lieu de /tmp/a dans la 2eme ligne.

Reste à savoir si c'est un comportement standard. J'imagine que oui.
Dans tous les cas, on est obligé d'avoir un cas particulier pour le
mapping anonyme : au moment du COW, j'imagine mal qu'on doive faire un
open /dev/zero suivi d'un mmap puis d'un memcpy... m'enfin c'est a voir,
ca serait peut-etre plus propre comme ca.

>  * La pile utilisateur doit-elle être un mapping de /dev/zero ou un
> mapping anonyme (si il y a une différence).

Là, je pense que c'est comme tu veux. Un mmap /dev/zero oblige a faire
un open avant, j'imagine que c'est pour ca que sous linux ce n'est pas
ce qui est choisi. Sous kos, y'a p't'etre pas d'autre solution que de
faire un open /dev/zero pour que ca reste propre.

Bonne soirée,

-- 
David Decotigny -- http://david.decotigny.free.fr




More information about the Kos-dev mailing list