Creating processes and pipes to transfer data between them.
Get the resource usage from a spawned command.
Creating basic commands in Xv6.
Creating an iostat() system call and a command to use it in Xv6.
Converting a program to use threads with pthreads.
Creating Unix/Linux commands to interact with an Xv6 filesystem.
Dynamic run-time linking the math library.
Add process scheduling priority (niceness) to Xv6.
Decode the VDSO elf object to get the time.