[OSy] vma_map, upresneni VF_AT_KSEG0

Martin Decky decky at d3s.mff.cuni.cz
Thu Dec 4 18:33:32 CET 2014


Hezky den,

> nejsem si jisty, jak je minene chovani vma_map, zvlaste v souvislosti s
> flagy VF_AT_KSEGx.
> Pochopil jsem to tak, ze pokud je uveden priznak VF_VA_AUTO, tak tyto
> flagy urcuji segment,
> ve kterem bude bude vytvoreno mapovani pameti. Nevim co ale delat v
> pripade, ze jsou alokace
> v segmentu KSEG0/1, kde nelze zadnou pamet mapovat, natoz rozdilne pro
> kazdy adresni prostor.

Myslenka pri navrhu rozhrani byla skutecne takova, ze by melo byt mozne 
pro alokaci virtualni pameti pouzit jednu a tutez funkci vma_map() bez 
ohledu na to, zda se alokuje ze segmentu s TLB mapovanim nebo ze 
segmentu s identickym mapovanim.

Identicke (a konstantni) mapovani v KSEG0/1 tedy jen predstavuje 
doplnkovou omezujici podminku na fyzicke stranky, ktere se pro virtualni 
stranky pri alokaci z KSEG0/1 mohou pouzit (jak pise Petr Tuma, 
vma_map() bude v tomto pripade vracet fyzicky souvislou pamet).

Poznamka "Alokace v segmentech KSEG0 a KSEG1 se vzajemne vylucuji" potom 
jen upozornuje na dalsi omezujici podminku, ktera plyne z toho, ze 
segmenty KSEG0 a KSEG1 jsou identicky mapovany na stejnou fyzickou pamet.

Je pravda, ze testy tyto okrajove pripady netestuji. Ale i tak autorum 
zadani prislo smysluplne, aby chovani vma_map() bylo maximalne univerzalni.

> Druha interpretace je, ze flagy uvadeji, odkud alokovat fyzicke stranky
> pro nase mapovani.

Ano, ty flagy lze skutecne chapat take jako hint v tomto smyslu. Fyzicka 
pamet pristupna pres KSEG0/1 je "vzacnejsi" nez pamet na fyzickych 
adresach vetsich nez 512 MB, ktera neni pres KSEG0/1 videt. Tudiz dava 
smysl pri alokaci v segmentech s TLB mapovanim prednostne pouzivat 
fyzickou pamet nad 512 MB, aby se setrilo "vzacnou" pameti pod 512 MB.

Zda takovou optimalizaci budete implementovat nebo ne, to uz zavisi 
ciste na Vas -- zadani to striktne nepozaduje.


M.D.




More information about the NSWI004 mailing list