[SOS] Pagination (Rapport page_physique <-> page_virtuelle)
romain
romain at hexanium.com
Ven 21 Oct 13:09:42 CEST 2005
Salut,
J'ai énormement de mal à comprend la pagination, je comprend à peut pres
l'article 3, la gestion des pages "physiques", par contre quand je passe
à l'article 4 je suis paumé, c'est pas trop le probleme, ca rentrera
bien un jour, je vais me refader 10 fois les articles si il le faut !
En fait j'ai déjà une question qui mais en branle tous ce que je croyais
avoir compris et quelques question qui me permettraient d'avancer.
Question 1:
-----------
Dans l'article 4 et dans le main.c de l'article 4, vous effectuer cette
suit d'instruction, dans cet ordre:
(Je fais des affirmations mais c'est pour montrer ce que j'ai pus
comprendre, c'est surement éronné)
1/ ppage_new = sos_physmem_ref_physpage_new(FALSE);
Ok ca ca va a peut pres, on choppe une page libre !
2/ sos_paging_map(ppage_new, vpage_tmp, FALSE, SOS_VM_MAP_ATOMIC |
SOS_VM_MAP_PROT_READ | SOS_VM_MAP_PROT_WRITE);
Bon ca je pige pas trop dans le source pour le moment mais j'avais
compris que la, on "associait" l'adresse virtuelle vpage_tmp à la page
physique toute neuve récupérée plus haut.
3/ Puis vous faite un truc qui me parait "fou":
sos_physmem_unref_physpage(ppage_new);
Mais du coup cette page et libre et poura etre reallouée ? Bizard, puis
qu'on à déjà mappé notre adresse virtuelle vpage_temp dessus. Donc
quelque part la ressource est en cours d'utilisation, mais la page
physique ne reflete pas cette etat, du coup si on refait un
sos_physmem_ref_physpage_new(FALSE); on va se rechopper la meme page !
(enfin on a des chances...)
4/ La on utilise la ressources ( o_O ) tjrs bizard la page "physique"
est cencé etre libre.
5/ La vous faites : sos_paging_unmap(vpage_tmp);
Pour défaire la relation Virtuellr -> Physique bon ok a la limite :D
Ce qui me chiffone c'est l'ordre, vous le spécifiez bien dans l'article,
4 (pdf) mais je ne trouve pas ca coherent ! Je dois me tromper ?
Si quelqu'un peu me permetre de comprendre pourquoi l'ordre du
unref_physpage par rapport au paging_unmp n'est pas important...ca
m'aiderai.
Question 2:
-----------
Est-ce qu'on peut dire que grace au "sos_paging_map" on associe une PAGE
PHYSIQUE à une PAGE_VIRTUELLE ?
Question 3:
-----------
Y'a-t-il d'autres solutions ormis celles exposées dans l'article 4
(Celle de SOS "Mirroring © Copyright 2002 2005 Sos Workgroup" ou celle
de linux expliquée) pour que lorqu'on active la pagination l'instruction
tous de suite apres l'activation (setup cr3 et cr0) se trouve dans la
bonne page (virtuelle et physique) ? (je comprend rien au
"Mirroring"...)
Question 4:
-----------
Question de base désolé, c'est quoi cette notion de "volatile" ? Quel
difference entre un "asm" et un "asm volatile" ?
Merci
A++
Plus d'informations sur la liste de diffusion Sos