remzi-arpacidusseau/ostep-projects
remzi-arpacidusseau/ostep-projects has 6,173 GitHub stars and 1,621 forks. GitHot measured +1 stars in 24 hours and +7 in 7 days. Last checked 2026-11-11 15:14 UTC. Last push 2024-07-19.
Projects for an undergraduate OS course
Measured star growth
- in 24h
- +1
- in 7 days
- +7
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalProjects for an Operating Systems Class
This repository holds a number of projects that can be used in an operating systems class aimed at upper-level undergraduates and (in some cases) beginning graduate students. They are based on years of teaching such a course at the University of Wisconsin-Madison.
Also (increasingly) available are some tests to see if your code works; eventually every project will have a set of tests available. The testing framework that is currently available is found here. A specific testing script, found in each project directory, can be used to run the tests against your code.
For example, in the initial utilities project, the relatively simple wcat
program that you create can be tested by running the test-wcat.sh script.
This could be accomplished by the following commands:
prompt> git clone https://github.com/remzi-arpacidusseau/ostep-projects
prompt> cd ostep-projects/initial-utilities/wcat
prompt> emacs -nw wcat.c
prompt> gcc -o wcat wcat.c -Wall
prompt> ./test-wcat.sh
test 1: passed
test 2: passed
test 3: passed
test 4: passed
test 5: passed
test 6: passed
test 7: passed
prompt>
Of course, this sequence assumes (a) you use emacs (you should!), (b) your
code is written in one shot (impressive!), and (c) that it works perfectly
(well done!). Even for simple assignments, it is likely that the
compile/run/debug cycle might take a few iterations.
C/Linux Projects
Initial Projects
These projects are meant to get you warmed up with programming in the C/UNIX environment. None are meant to be particularly hard, but should be enough so that you can get more comfortable programming.
Realize the best thing you can do to learn to program in any environment is to program a lot. These small projects are only the beginning of that journey; you'll have to do more on your own to truly become proficient.
- Unix Utilities (cat, grep, zip/unzip)
- Sort (text-based)
- Sort (binary)
- Reverse (very simple reverse program)
Processes and Scheduling
Virtual Memory
- Memory Allocator
Concurrency
- Web Server
- Parallel Zip
- MapReduce
- Web Crawler
File Systems
Distributed Systems
Kernel Hacking Projects (xv6)
These projects all are to be done inside the xv6 kernel based on an early version of Unix and developed at MIT. Unlike the C/Linux projects, these give you direct experience inside a real, working operating system (albeit a simple one).
Read the install notes to see how to download the latest xv6 and install the tools you'll need.
Initial Projects
Processes and Scheduling
Virtual Memory
Concurrency
File Systems
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
562,051 starspublic-apis/public-apis
A collective list of free APIs
498,450 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
454,552 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,405 stars