Assignments

Assignment 1: 6 hours over 7 days

Download assignment. In this assignment you will set up the repository, compile the distributed code base.

    Learning outcomes:
  • Learn how to use git.
  • Low to build and compile OS161.
  • Navigate and read the source code with the goal of answering questions about how it works.
  • Learn using the gdb debugger.

Assignment 2: 20 hours over 10 days

Download assignment. In this assignment you will implement basic synchronization primitives.

    Learning outcomes:
  • Read about and understand how the hardware implements atomic instructions and their impact on software.
  • Implement blocking locks and condition variables in OS161 based on existing implementation of mutexes and semaphores.

Assignment 3: 10 hours over 7 days

Download assignment. In this assignment you will solve a toy synchronization problem that involves using synchronization primitives in OS161.

    Learning outcomes:
  • Understand how to enforce mutual exclusion and thread-to-thread signaling using the synchronization primitives implemented in A2.

Assignment 4: 40 hours over 14 days

Download assignment. In this assignment you will implement file-related system calls.

    Learning outcomes:
  • Implement several new system calls in OS161.
  • Understand how to safely transport the arguments (copy in/out) between the user land and the kernel.
  • Implement new data structures in the kernel to support the new file-related system calls: open, close, read, write, lseek, chdir.
  • Learn about and use the virtual file system interface.

Assignment 5: 60 hours over 21 days

Download assignment. In this assignment you will implement fork/exec system calls

    Learning outcomes:
  • Implement fork and exec system calls in OS161.
  • Learn about the process abstraction and Unix and mechanisms of new process creation.
  • Learn about enforcing protection and safety in a multiprocess operating system.

Assignment 6: 80 hours over 25 days

Download assignment. In this assignment you will implement the virtual memory system.

    Learning outcomes:
  • Learn about the functions, benefits and costs of virtual memory.
  • Understand the hardware and software mechanisms needed to implement it.
  • Implement full virtual memory support in OS161, including the handling of TLB faults, data structures for virtual address spaces, page tables and paging.