[OSy] vma_merge
Petr Tuma
petr.tuma at dsrg.mff.cuni.cz
Sat Jan 12 14:02:42 CET 2008
Dobry den,
> Implementace typu, ze souvisy blok virtualni pameti ma souvislou
> fyzickou pamet. Pokud pak dostanu k mergovani dva sousedici virtualni
> bloky, kde kazdy ale ukazuje do jine casti fyzicke pameti, musi prijit
> na radu ono kopirovani do noveho souvisleho bloku fyzicke pameti.
Pravda, tohle usporadani je z hlediska rozsireneho zadani dost nevhodne.
Nejen ze se spatne dela vma_merge, ale treba vma_resize pak nefunguje
dobre s rozhranim frame alokatoru a obcas musi kopirovat data ...
Za techto okolnosti me nenapada zadna rozumne elegantni cesta jak
implementovat vma_merge. Na vasem miste bych se asi snazil upravit
spravce pameti tak, aby bloky virtualni pameti nemusely odpovidat
souvisle fyzicke pameti (ostatne by to nemuselo vyjit tak slozite, pokud
mate nejaky seznam bloku virtualni pameti a v kazdem jednu adresu
zacatku fyzicke pameti, pak by slo treba z te jedne adresy udelat pole -
v TLB handleru se pak neco ve stylu "entry = area->physical_base +
offset" zmeni na "entry = area->physical_mapping [offset / page_size]" a
to by mohlo byt vse - sice porad bude moznost, ze vma_merge bude
potrebovat skoncit s ENOMEM, kdyz mu nepujdou spojit ta pole, ale
celkova pametova narocnost uz nebude tak hrozna jako pri vasem
stavajicim reseni).
V krajnim pripade bych asi zvolil upravu testu tak, aby toto konkretni
chovani vma_merge nebylo na zavadu, napsal k tomu nejake vysvetleni a
soustredil se na jine casti zadani s vedomim, ze zrovna tato nebude
nejsilnejsi.
Petr Tuma
More information about the NSWI004
mailing list