Search
Na tomto cvičení se seznámíte s jádrem miniaturního OS NOVA a implementujete do něj systémové volání brk. NOVA je mikrohypervizor původně vyvíjený na Drážďanské univerzitě, později ve firmě Intel a nyní firmami GENODE labs a Cyberus Technology. Na cvičeních však nebudete pracovat s kompletní verzí jádra NOVA, ale se zjednodušenou verzí pro výuku, která má pouze 2 tisíce řádek kódu.
brk
Pro toto cvičení budete potřebovat následující:
libc6-dev-i386, qemu-system-i386
Ec::syscall_handler
Ptab::insert_mapping
Kalloc
Implementujte systémové volání brk s prototypem:
void *brk(void *address)
Toto systémové volání nastaví konec datového segmentu v adresním prostoru procesu (tzv. program break nebo jen break) na adresu danou parametrem address. Tím se zvětší nebo zmenší množství alokované paměti, které může program využívat ke svému běhu. Break je první adresa za koncem namapovaného datového segmentu.
address
Vaše řešení by mělo splňovat následující požadavky:
Odevzdává se archiv se souborem ec_syscall.cc obsahující vaši implementaci, ideálně vytvořený pomocí
ec_syscall.cc
make hw10
user/hello.c
make run
printf()
-gdb
Ec::root_invoke()
readelf –program-headers hello
readelf –sections hello
osy-nova-intro.pdf