Processes Refer closely to notes and examples from classes 8, 9, and 10. You must create a program that replaces the trivial os2 from the examples. It will be a very small and low-functioning operating system. Stages: 1. Act as a shell: wait for the user to type a command, then obey that command, and repeat. Add only trivial commands like exit, echo, what-time-is-it, and make sure it works before continuing. 2. Add a run command: the user types a file name, assume it is the name of a .exe file in your regular unix directory. Read it (using TAPE_LOAD and TAPE_READ operations) into the user area of the virtual address space, give it a very small stack, and run it. At this stage, do not expect the operating system to regain control when the user program exits, just let the whole thing stop. 3. Trap and deal with page faults. The user stack should be allowed to grow (within reason) as needed, but other page faults should be treated as fatal errors. 4. Add a trivial syscall, just to make sure you can. Then add at least one real syscall: exit(). The exit syscall should allow the operating system to regain control and begin accepting commands again. 5. Switch to user mode when running the user program. The "io" import will give you trouble. What must you do?