Practice building Unix command-line tools from scratch in C as part of an OS course assignment.
Implement a shell with process management to understand how operating systems execute programs.
Modify the xv6 teaching OS kernel to add features like a lottery scheduler or null-pointer memory protection.
Complete a MapReduce or parallel web server project to learn concurrent programming in C.
Requires Linux with GCC, xv6 projects also need the xv6 build toolchain installed.
This repository contains a set of programming projects designed for an undergraduate operating systems course. The projects were developed over years of teaching at the University of Wisconsin-Madison. Students in such a course typically use this material to practice building real software that interacts directly with the operating system, working in the C programming language on Linux. The projects are organized into two tracks. The first track uses standard Linux and covers topics that appear in a typical OS curriculum: basic Unix command-line utilities (tools like cat and grep built from scratch), a simple shell that can run programs, a memory allocator, concurrent programs like a web server and a parallel compression tool, a MapReduce implementation, and a file system checker. These projects get progressively harder as the course advances through its major topics. The second track uses xv6, a small teaching operating system developed at MIT that is based on an early version of Unix. Working inside xv6 means students modify actual kernel code rather than just writing programs that run on top of an operating system. Projects in this track include adding a lottery scheduler, implementing null pointer protections in virtual memory, and building basic kernel-level threads. Each project directory includes test scripts so students can check whether their code produces the correct output. The testing framework runs automated tests and prints pass or fail for each one, giving quick feedback during the write, compile, and debug cycle. The repository is a companion to the textbook Operating Systems: Three Easy Pieces (often called OSTEP), written by the same author. Instructors can use these projects as homework assignments alongside that book.
← remzi-arpacidusseau on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.