Interactivity is unavailable, but the core models remain below. The complete chapter PDFs are one directory above this file and the official OSTEP site remains linked in the course navigation.
- Program to process
- The kernel turns passive program bytes into a schedulable process by creating an address space, PCB, and initial register state.
- Scheduling
- FIFO, SJF, and Round Robin choose different CPU timelines, which changes response and turnaround time for the same jobs.
- Address translation
- A virtual address splits into a virtual page number and unchanged offset; the TLB or page table supplies the physical frame.
- Basic paging
- A page table maps fixed-size virtual pages to noncontiguous physical frames without changing the within-page offset.
- Page fault
- If a valid page is absent, the kernel reads it into a frame, repairs the page table and TLB, then retries the original instruction.
- Race and mutex
- Two unlocked increments can both read 0 and leave 1; mutex ownership makes one thread wait so the final value becomes 2.
- Condition variable
- A waiting thread atomically releases the mutex and sleeps, then wakes, reacquires the mutex, and rechecks the shared-state predicate.
- Storage and DMA
- The driver configures DMA, the device transfers data while the CPU runs other work, and an interrupt reports completion.
- RAID
- Striping, mirroring, and parity trade usable capacity and write cost for different recovery behavior; RAID is not a backup.
- File access
- Path lookup resolves directories to an inode; open() creates process-local open state; read() follows the inode mapping to data blocks.
- Journaling
- A durable commit authorizes replay after a crash, while an incomplete uncommitted log must be ignored.
- SSD translation
- The FTL writes a new physical page, marks the old page stale, and later copies live pages before erasing a block.
- RPC retry
- A lost reply leaves the client unsure whether the effect occurred; request IDs, deduplication, or idempotency prevent duplicate effects.