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!).

Note: All of these scripts are available individually here. Each single script is available as a tar file; for example, type tar xvf scheduler.tar to unpack the scheduler.py script.

A single tar file containing all scripts is also available; type

tar xvf all.tar
to unpack all the scripts once you've downloaded the tar file.

Virtualization

  1. Direct Execution: Read this and write some code
  2. Scheduling Basics: Read this and run scheduler.py
  3. MLFQ Scheduling: Read this and run scheduler-mlfq.py
  4. Lottery Scheduling: Read this and run lottery.py
  5. Relocation: Read this and run relocation.py
  6. Segmentation: Read this and run segmentation.py
  7. Paging: Read this and run paging-linear-translate.py
  8. TLBs: Read this and write some code.
  9. Multi-level Paging: Read this and run paging-multilevel-translate.py
  10. Paging Policy: Read this and run paging-policy.py

Concurrency

None (yet).

Persistence

  1. Disks: Read this and run disk.py
  2. RAID: Read this and run raid.py
  3. File System Introduction: Read this and write some code.
  4. File System Implementation: Read this and run vsfs.py