Peer Review lab 3b
The program compiles and works as intended with correct output. Your kernel code is well written and it properly differentiates between system calls and interrupts, sending any other exceptions to an infinite loop as required. The kernel also switches between user processes in the right order, giving them roughly equal execution time, and correctly resumes each process where it left off so that it continues printing the next character. The handling of system calls and the advancement of the program counter are correct, and the code is well commented and easy to follow.
Good job!