[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