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 TU Dresden, později ve firmě Intel a nyní převážně projektem GENODE. 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 adresního prostoru procesu (tzv. program break) na danou adresu (parametr address). Tím se zvětší nebo zmenší množství alokované paměti, které může program využívat ke svému běhu. Program break je první adresa za koncem namapovaného virtuálního adresního prostoru.
address
Vaše řešení by mělo splňovat následující požadavky:
address-1
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