[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