[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