Assignment 1: 1 week. 6 hours

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: 10 days. 20 hours

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: 7 days. 10 hours

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: 14 days. 40 hours

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: 21 days. 60 hours

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: 24 days. 80 hours

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:

  • ** Handling of TLB faults

  • ** Abstractions and data structures for virtual address spaces

  • ** Page tables (handling large page tables)

  • ** Paging to disk.