BRUTE AE: 10nova-syscall: Test: Half-page cleaning
Poradíte mi prosím, jak "memsetnout" konkrétní úsek paměti?
Když backward break
spadne doprostřed stránky, tak adresu alignuji nahoru a od této alignuté adresy dealokuji paměť. Mezi new_break
a alignutou hodnotou je ale paměť, která nemá být dealokována, pouze nastavena na 0. Pročítám si zdrojové kódy NOVA OS a nemohu přijít na to, jak bych takovýto "memset" mohl provést.
Pochopil jsem, že paměť mohu jednoduše nastavit na libovolnou hodnotu, když alokuji stránky. Napadlo mě tedy, že bych mohl dealokovat o jednu stránku víc dolů a pak ji znovu alokovat a nastavit FILL na 0. To by ale vyčistilo více paměti, než kolik zadává hodnota new_break
.
Spíše bych čekal nějakou metodu (například v rámci třídy Kalloc) s prototypem jako je tento: my_memset(void *begin, int val, size_t size)
Obsahuje implementace OS NOVA něco takového, nebo se očekává, že toto implementujeme sami?
Děkuji, Cyril Janeček
Keep this URL here: https://cw.felk.cvut.cz/brute/data/ae/release/2020z_b4b35osy/10nova-syscall/cviceni/ae/results/results.php?&idg=janeccyr&idu=5947&upload=1005460&result=640908#test-7