Implement an OS Component to Prove Systems Understanding
10 weeks · 0 milestones
Implement a working process scheduler, memory allocator, or file system component from scratch, accompanied by a written trade-off analysis comparing your design choice against at least two alternatives (e.g. preemptive vs. cooperative scheduling; paging vs. segmentation; linked-list vs. buddy allocator). The analysis must explain the specific workloads under which your choice outperforms alternatives and the specific conditions under which it does not. Proof: the implementation and analysis reviewed by a CS lecturer or systems engineer who asks 'what would happen to your scheduler if you had 1000 threads all waiting on the same lock?' — you must answer using your implementation, not a generic description.
Milestone map
Milestone map
3 milestones
Study process management: process states, the fork-exec model, process scheduling (FIFO, round-robin, priority scheduling), and inter-process communication (pipes, signals). Implement a simple UNIX shell in C or Python that supports: command execution (fork-exec), input/output redirection, pipes between two commands, and background processes with &.
Proof required
Submit: a public GitHub repository containing your shell implementation with a test script demonstrating: command execution, input/output redirection, a pipe between two commands, and a background process; and a 200-word explanation of why fork() creates a copy of the entire address space and what the OS does to make this efficient. A CS lecturer or systems programmer must confirm the implementation is correct and the explanation is accurate.
What gets checked
- Shell correctly handles all four features — command execution, redirection, pipes, background processes
- Test script demonstrates each feature independently — not just a single composite command
- A CS lecturer or systems programmer has confirmed the implementation is correct