OSTEP homework mirror. Source: https://github.com/remzi-arpacidusseau/ostep-homework Author: Remzi Arpacidusseau
Go to file
Remzi Arpaci-Dusseau 6592d3a6a0 fix for Python 3.2 2024-02-18 12:17:42 -08:00
cpu-api fix for Python 3.2 2024-02-18 12:17:42 -08:00
cpu-intro more clarity in help text 2022-09-17 14:35:13 -05:00
cpu-sched update to random seeds so as to work identically in Py2/Py3 2020-05-30 15:16:25 -05:00
cpu-sched-lottery update to random seeds so as to work identically in Py2/Py3 2020-05-30 15:16:25 -05:00
cpu-sched-mlfq some fixes to README to match current simulation 2023-09-28 08:33:31 -04:00
cpu-sched-multi update to random seeds so as to work identically in Py2/Py3 2020-05-30 15:16:25 -05:00
dist-afs initial commit of afs 2020-06-08 04:00:48 -05:00
file-devices starting work on modified process-run.py to show pio/interrupt concepts 2020-07-01 15:47:20 -05:00
file-disks initial disk sim push 2020-06-08 16:14:41 -05:00
file-ffs initial commit of ffs 2020-05-21 10:02:45 -05:00
file-implementation old ref count fixed in README 2023-12-08 10:21:37 -05:00
file-integrity initial checksum commit 2020-05-31 12:36:12 -05:00
file-journaling initial LFS commit; fix small random thing in fsck 2020-05-30 14:42:42 -05:00
file-lfs fix sized bug (thanks to Prabhsimrandeep Singh) 2020-06-23 07:59:36 -05:00
file-raid fixed typo thanks to Giovanni Di Santi 2020-09-06 09:27:07 -05:00
file-ssd initial SSD sim commit 2020-05-30 15:39:32 -05:00
threads-api add threads API code and Makefile and README 2020-06-08 04:13:03 -05:00
threads-bugs add thread deadlock code and Makefile and README 2020-06-08 04:54:28 -05:00
threads-cv add threads CV code and Makefile and README 2020-06-08 04:32:59 -05:00
threads-intro update to avoid time.clock (deprecated) 2020-06-11 13:55:42 -05:00
threads-locks add loop.s example, and correct jgt not jgte 2023-10-05 10:23:14 -04:00
threads-sema Add code needed for semaphore chapter 2020-06-28 06:05:17 -05:00
vm-beyondphys avoid overflow in i 2020-09-06 14:38:40 -05:00
vm-beyondphys-policy add: is 2020-08-22 08:10:21 -04:00
vm-freespace update to random seeds so as to work identically in Py2/Py3 2020-05-30 15:16:25 -05:00
vm-mechanism update to random seeds so as to work identically in Py2/Py3 2020-05-30 15:16:25 -05:00
vm-paging fix python range need integer parameter 2020-07-17 11:08:09 +08:00
vm-segmentation fixed bug (found by Benjamin Wilhelm) that doesn't check if phys addr is big enough given various base addresses 2020-06-13 08:00:57 -05:00
vm-smalltables added 0x where relevant 2022-10-15 08:46:16 -05:00
README.md Change filename according to the book/subdir 2020-07-04 19:52:26 +03:00

README.md

Homeworks

Each chapter has some questions at the end; we call these "homeworks", because you should do the "work" at your "home". Make sense? It's one of the innovations of this book.

Homeworks can be used to solidify your knowledge of the material in each of the chapters. Many homeworks are based on running a simulator, 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 other 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 homework included below has a README file that explains what to do. 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 code are all in the README.

Thus, your task: read a chapter, look at the questions at the end of the chapter, and try to answer them by doing the homework. Some require a simulator (written in Python); those are available by below. Some others require you to write some code. At this point, reading the relevant README is a good idea. Still others require some other stuff, like writing C code to accomplish some task.

To use these, the best thing to do is to clone the homeworks. For example:

prompt> git clone https://github.com/remzi-arpacidusseau/ostep-homework/
prompt> cd file-disks
prompt> ./disk.py -h

Introduction

Chapter What To Do
Introduction                         No homework (yet)

Virtualization

Chapter What To Do
Abstraction: Processes Run process-run.py
Process API Run fork.py and write some code
Direct Execution Write some code
Scheduling Basics Run scheduler.py
MLFQ Scheduling Run mlfq.py
Lottery Scheduling Run lottery.py
Multiprocessor Scheduling Run multi.py
Abstraction: Address Spaces Write some code
VM API Write some code
Relocation Run relocation.py
Segmentation Run segmentation.py
Free Space Run malloc.py
Paging Run paging-linear-translate.py
TLBs Write some code
Multi-level Paging Run paging-multilevel-translate.py
Paging Mechanism Run mem.c
Paging Policy Run paging-policy.py
Complete VM No homework (yet)

Concurrency

Chapter What To Do
Threads Intro Run x86.py
Thread API Run some C code
Locks Run x86.py
Lock Usage Write some code
Condition Variables Run some C code
Semaphores Read and write some code
Concurrency Bugs Run some C code
Event-based Concurrency Write some code

Persistence

Chapter What To Do
I/O Devices No homework (yet)
Hard Disk Drives Run disk.py
RAID Run raid.py
FS Intro Write some code
FS Implementation Run vsfs.py
Fast File System Run ffs.py
Crash Consistency and Journaling Run fsck.py
Log-Structured File Systems Run lfs.py
Solid-State Disk Drives Run ssd.py
Data Integrity Run checksum.py and Write some code
Distributed Intro Write some code
NFS Write some analysis code
AFS Run afs.py