[SOS] Pagination ?
Thomas Petazzoni
thomas.petazzoni at enix.org
Lun 11 Oct 00:09:54 CEST 2004
Bonsoir,
Je réponds déjà la première question. La seconde question mérite une
réponse plus réfléchie, et la relecture d'un peu de code source.
On Sun, Oct 10, 2004 at 06:49:47PM +0200, Cyril Dupuit wrote :
> Que se passe t-il lorsque l'objet sera transféré sur disque pour libérer la
> mémoire centrale, puis réaffecté en mémoire centrale à une autre adresse
> physique ?
> La valeur d'ID ne correspondra plus avec le pointeur sur l'objet.
Plusieurs choses :
1) La valeur d'ID est déduite de l'adresse de l'objet. Quand tu
utilises la pagination, le noyau manipule des adresses
_virtuelles_ dont même si tu swappes la page sur le disque, puis
que tu la replaces ensuite en mémoire, l'adresse _virtuelle_ ne
changera pas (par contre l'adresse _physique_ peut avoir
changé). Pour rappel, ce qui permet de générer un défaut de page,
c'est qu'une page _virtuelle_ est marquée comme "absente".
2) Es-tu sûr de vouloir swapper des données de ton noyau ? Pour
certaines d'entre elles c'est possible, mais imagine que tu
commences à swapper des données qui servent justement à aller
récupérer des données du swap (un objet "disque dur", une file
d'attente d'entrées sorties, etc...).
J'espère que cela répond à tes questions. Si ce n'est pas le cas,
n'hésites pas à demander !
Bonne soirée,
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
Plus d'informations sur la liste de diffusion Sos