If you have not completed Assignment-2 properly, then your system does not support multiple processes, and the fork() and execv() system calls do not work. However, you can still get going with Assignment-3. Start with a kernel that compiles and can run a user program using the "p" command, as in "p /sbin/poweroff". Now replace the dumbvm.c file with mipsvm.c as described in the Setup section of the assignment, and follow all other instructions there. You should be able to implement the virtual memory management with TLB handling and paging. If you can run a user program successfully which has heavy memory operations, for example, "matmult" or "sort", then you can assume that your implementation works. This does not require you to call fork() or execv() because you won't be using shell, instead, you'll be using the old "p" command.

To implement the sbrk() system call, however, you'll need to know the basic system call mechanism and how to add a new system call to the kernel. Again, fork() and execv() are not required because you can write a user program that uses malloc() and run it using "p" command, without using the shell.