[SOS] Pagination (Rapport page_physique <-> page_virtuelle)

romain romain at hexanium.com
Sam 22 Oct 12:26:50 CEST 2005


(Désolé j'ai fait un raccourcis pour envoyer le 1re message sans faire
exprés)

Salut,


> En fait le sos_paging_map fait un
> sos_physmem_ref_physpage_at(ppage_paddr);
> donc la page est incrémenté une deuxième fois voila pourquoi 
> on le décrément ici.

Ha, j'avais pas vu ce Ref_At, je vais regarder plus en détail !

Mais en effet ca laisserait la ressource utilisé....
Tu me diras dans l'article il précisent bien les ref_count.
 
A/Ce qui me parait logique 

+1  sos_physmem_ref_physpage_new
+1  sos_paging_map
/* Page physique "marqués" utilisée ref_count = 2*/
-1  sos_paging_unmap
-1  sos_physmem_unref_physpage

B/c qui me parait moins logique

+1  sos_physmem_ref_physpage_new
+1  sos_paging_map
-1  sos_physmem_unref_physpage
/* Page physique "marquée" utilisée ref_count = 1 */
-1  sos_paging_unmap



Est-ce que alors on peut dire que du moment que la ressource physique
mappée est quand meme "marqué" "occupée" dans les 2 cas, 2 fois pour la
methode A et 1 fois pour la mehode B. Peut on dire alors que cela n'a
pas d'importance du moment que la page physique mappée a une ref_count >
0 ?

Merci de confirmer ou non cette facon de voir les choses...

(Désolé pour le message d'avant, j'ai fait un raccourcis clavier sans
faire exprés et ca à envoyé le message... Désolé)

A++

Romain

 
 
> > -----Message d'origine-----
> > De : sos-bounces at the-doors.enix.org
> > [mailto:sos-bounces at the-doors.enix.org] De la part de 
> > anthoine.bourgeois
> > Envoyé : vendredi 21 octobre 2005 20:42
> > À : SOS mailing-list
> > Objet : Re: RE : [SOS] Pagination (Rapport page_physique <-> 
> > page_virtuelle)
> > 
> > 
> > Bonsoir,
> > 
> > 
> > > Message du 21/10/05 13:09
> > > De : "romain" <romain at hexanium.com>
> > > A : "'SOS mailing-list'" <sos at the-doors.enix.org>
> > > Copie à :
> > > Objet : RE : [SOS] Pagination (Rapport page_physique <->
> > page_virtuelle)
> > > 
> > > 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...)
> > 
> > En fait le sos_paging_map fait un
> > sos_physmem_ref_physpage_at(ppage_paddr);
> > donc la page est incrémenté une deuxième fois voila pourquoi 
> > on le décrément ici.
> > 
> > > 
> > > 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.
> > 
> > L'ordre est important.
> > 
> > > 
> > > 
> > > Question 2:
> > > -----------
> > > Est-ce qu'on peut dire que grace au "sos_paging_map" on 
> associe une
> > > PAGE PHYSIQUE à une PAGE_VIRTUELLE ?
> > 
> > Oui c'est exactement ça
> > 
> > > 
> > > 
> > > 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"...)
> > 
> > Je pense que oui mais je peux pas te donner d'exemple.
> > > 
> > > 
> > > Question 4:
> > > -----------
> > > Question de base désolé, c'est quoi cette notion de
> > "volatile" ? Quel
> > > difference entre un "asm" et un "asm volatile" ?
> > 
> > Bonne question, si quelqu'un à la réponse
> > > 
> > > 
> > > 
> > > Merci
> > > 
> > > 
> > 
> > Anthoine Bourgeois
> > 
> > 
> > 
> 
> 
> _______________________________________________
> Sos mailing list
> Sos at the-doors.enix.org 
> http://the-doors.enix.org/cgi-> bin/mailman/listinfo/sos
> 




Plus d'informations sur la liste de diffusion Sos