[OSy] Second extended assignment - nejasnosti

Vojtech Horky horky at d3s.mff.cuni.cz
Wed Nov 8 08:40:17 CET 2017


Dobrý den.

Dne 7.11.2017 v 21:03 Roman Firment napsal(a):
> * kedy sa maju alokovat fyzicke ramce? V case ked vznika vma
>    alebo az v handleri vynimky TLB Refill Exception, pripadne inde. Ak az
>    v handleri, tak co znamena ENOMEM (nedostatok fyzickej, virtualnej 
> pamati?) pri
>    volani vma_vmap?
Už při volání vma_map().

Pokud byste to volání odložil do refillu (něco jako Linux se zapnutým 
overcommitem), mohla by dojít paměť (až později) a nebylo by jak tuto 
chybu rozumně signalizovat zpět. Pokud byste tedy nechtěl implementovat 
nějaký swapping a spol. :-)



> * moze nastat situacia, ze funkcia vma_map alebo vma_unmap bude vykonavana
>    v inom mode nez kernelovskom?
Ne, userland k ní přístup nemá.


> * frame alokator v kaliste pouziva iba ramce zo spodnych 512mb. Malloc 
> pouziva
>    tento frame alokator. Vsetky struktury potom budu nutne lezat v tomto 
> segmente.
>    Nieje to problem?
Pro účely cvičení to nevadí, jde o záměrné zjednodušení.


Frame alokátor má rozhraní připravené na podporu alokace rámců i z 
dalších segmentů (VF_AT_* flagy). Takže pokud funkce pro namapování 
paměti vidí, že k paměti bude nutné přistupovat skrz TLB, měla by 
preferovat alokaci z oblasti nad 512M, protože těch spodních 0.5G je 
"cennějších". Nicméně, námi dodaný frame alokátor podporuje pouze Vámi 
zmiňovaných 512M, takže toto není nutné implementovat.

Ještě pro úplnost - skrz TLB lze přistupovat i k identicky mapované 
paměti, takže funkčnost TLB otestovat půjde.


> * len pre istotu, ak nemusime implementovat ziadne dynamicke 
> priradzovanie asid-ov
>    a pocet vmm je omezeny poctom validnych asid-ov, tak nam staci 
> pouzivat jednoduche
>    inkrementovanie globalnej premennej ako je tomu v povodnej 
> implementacii kalista.
>    Alebo je ten pocet omezeny iba v jednom okamihu?
Druhá možnost. Při vytvoření VAS se očekává, že rovnou dostane přiřazený 
ASID, který je platný po celou dobu jeho existence. Zrušením daného VASu 
se uvolňuje jeho ASID.

Čili v jednom okamžiku může existovat max 255 VASů (resp. pokud 
potřebujete nějaký ASID si vyčlenit pro speciální účely v rámci kernelu, 
je ok podporovat "jen" 254).


Dává to takhle smysl?

- VH




More information about the NSWI004 mailing list