[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