Files
ostep-projects/README.md
2019-02-22 04:29:57 -06:00

75 lines
2.5 KiB
Markdown

# Projects 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.
## 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](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/initial-utilities) (cat, grep, zip/unzip)
* Sort (text-based)
* Sort (binary)
* [Reverse](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/initial-reverse) (very simple reverse program)
### Processes and Scheduling
* [Shell](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/processes-shell)
### Virtual Memory
* Memory Allocator
### Concurrency
* [Parallel Zip](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/concurrency-pzip)
* [MapReduce](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/concurrency-mapreduce)
* Web Server
* Web Crawler
### File Systems
* [File System Checker](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/filesystems-checker)
### Distributed Systems
## Kernel Hacking Projects (xv6)
These projects all are to be done inside the
[xv6](https://pdos.csail.mit.edu/6.828/2017/xv6.html) kernel developed at
MIT. Unlike the C/Linux projects, these give you direct experience inside a
real, working operating system (albeit a simple one).
### Initial Projects
* [Intro To xv6](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/initial-xv6)
### Processes and Scheduling
* [Scheduling (Lottery)](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/scheduling-xv6-lottery)
### Virtual Memory
* [Virtual Memory (Null Pointer and Read-Only Regions)](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/vm-xv6-intro)
### Concurrency
* [Kernel Threads (Basic Implementation)](https://github.com/remzi-arpacidusseau/ostep-projects/tree/master/concurrency-xv6-threads)
### File Systems