Homework

Homeworks can be used to solidify your knowledge of the material in each of the chapters. Most homeworks are based on running little simulators, which mimic some aspect of an operating system. For example, a disk scheduling simulator could be useful in understanding how different disk scheduling algorithms work. Some homeworks are just short programming exercises, allowing you to explore how real systems work.

For the simulators, the basic idea is simple: each of the simulators below let you both generate problems and obtain solutions for an infinite number of problems. Different random seeds can usually be used to generate different problems; using the -c flag computes the answers for you (presumably after you have tried to compute them yourself!).

Each simulator now has a README file that explains how to run the simulator. Previously, this material had been included in the chapters themselves, but that was making the book too long. Now, all that is left in the book are the questions you might want to answer with the simulator; the details on how to run the simulator are all in the README.

Some simulations have a short video with one of the authors introducing the basic concepts of how to use the simulator to generate homework problems. Exciting, because you have to read less! Not exciting, because you have to hear us speak.

NEW: Homework source code has been moved to GitHub here. The best way to access them is to type git clone https://github.com/remzi-arpacidusseau/ostep-homework/ and then cd into the relevant homework directory, read the README, and follow directions at the end of the relevant chapter.

Virtualization

Topic of Interest   Chapter   Video   What To Do
Process Intro   PDF   Video   Run process-run.py
Process API   PDF   Video   Write some code
Direct Execution   PDF   Video   Write some code
Scheduling Basics   PDF   Video   Run scheduler.py
MLFQ Scheduling   PDF   Video   Run mlfq.py
Lottery Scheduling   PDF   Video   Run lottery.py
Multiprocessor Scheduling   PDF   Video   Run multi.py
VM Intro   PDF   Video   Write some code
VM API   PDF   Video   Write some code
Relocation   PDF   Video   Run relocation.py
Segmentation   PDF   Video   Run segmentation.py
Free Space   PDF   Video   Run freespace.py
Paging   PDF   Video   Run paging-linear-translate.py
TLBs   PDF   Video   Write some code
Multi-level Paging   PDF   Video   Run paging-multilevel-translate.py
Paging Mechanism   PDF   Video   Run mem.c
Paging Policy   PDF   Video   Run paging-policy.py

Concurrency

Topic of Interest   Chapter   Video   What To Do
Threads (Intro)   PDF   Video   Run x86.py
Threads (API)   PDF   Video   Run main-*.c
Threads (Locks)   PDF   Video   Run x86.py
Threads (Locks Usage)   PDF   Video   Write some code
Threads (CVs)   PDF   Video   Run main-*.c
Threads (Semaphores)   PDF   Video   Write some code
Threads (Bugs)   PDF   Video   Run vector-*.c
Threads (Events)   PDF   Video   Write some code

Persistence

Topic of Interest   Chapter   Video   What To Do
Disks   PDF   Video   Run disk.py
RAID   PDF   Video   Run raid.py
FS Intro   PDF   Video   Write some code
FS Implement   PDF   Video   Run vsfs.py
FFS   PDF   Video   Run ffs.py
Journaling   PDF   Video   Run fsck.py
LFS   PDF   Video   Run lfs.py
SSDs   PDF   Video   Run ssd.py
Integrity   PDF   Video   Run checksum.py and Write some code
Distributed Intro   PDF   Video   Write some code
NFS   PDF   Video   Download this and Write some analysis code
AFS   PDF   Video   Run afs.py

Suggestions?

Suggestions for homework? Please send them to us. Thanks!