Projects
For additional information related to sections and projects, click on the Sections tab above.
Project 1: Shell
Use kernel calls such as fork, exec, and pipe to instantiate subprocesses and implement I/O redirection and pipelines.Project details
Due: Thursday, April 8, 2021 at 11:59 PM
Project 2: Thread Dispatcher
Implement a simple threading library with a preemptive dispatcher.Project details
Due: Thursday, April 15, 2021 at 11:59 PM
Project 3: Synchronization
Solve synchronization problems using C++ locks and condition variables.Project details
Due: Thursday, April 22, 2021 at 11:59 PM
Project 4: Implementing Locks and Condition Variables
Add synchronization primitives to your threading library from Project 3.Project details
Due: Thursday, April 29, 2021 at 11:59 PM
Project 5: Memory-Mapped Encrypted Files
Write a page fault handler to load data from encrypted files into memory on-demand (and decrypt it on the way).Project details
Due: Thursday, May 13, 2021 at 11:59 PM
Project 6: Page Replacement with the Clock Algorithm
Add page replacement to your solution to Project 5, so that only the most recently accessed pages consume memory.Project details
Due: Thursday, May 20, 2021 at 11:59 PM
Project 7: Unix V6 File System
Implement a mechanism to read file data from a "disk" in the Unix V6 file system format.Project details
Due: Wednesday, May 26, 2021 at 11:59 PM
Project 8: Journaling File System
Implement log replay during crash recovery for a file system that uses write-ahead logging.Project details
Due: Thursday, June 3, 2021 at 11:59 PM