Skip to content

M2 Part 0 and Part I: one system call, end to end #3

Description

@tamnd

Roughly eighteen weeks. Fourteen lessons, Z01 to Z05 and S01 to S09, and the first thing anyone outside the project can judge.

Part 0 gets a reader a kernel they control and the skills to look at it, with no theory at all. Part I then follows one system call, a one byte write followed by an fsync, from the instruction that enters the kernel down to the completion interrupt. That single walk is the spine of the whole book, and Parts VII and VIII walk it again four hundred lessons of depth later.

The build lesson is Z05, fifth, not first. Most kernel books open with the build. It costs a reader an afternoon, teaches them nothing about kernels, and is the single most common place they give up. By Z05 they already have a kernel and already have traces, so they want their own.

Exit criterion. A reader who has never touched a kernel can trace a write call end to end, unassisted, and explain every layer boundary it crosses and which ops struct was crossed at each one. Beginner completion across the fourteen lessons is at or above 70 percent, measured rather than assumed.

Lessons

  • Z01 A kernel in a tab
  • Z02 Your first trace
  • Z03 The two worlds
  • Z04 Reading 37 million lines
  • Z05 Configure, build, boot
  • S01 Crossing the line
  • S02 The table
  • S03 Your data is over there
  • S04 The file that is not a file
  • S05 The first plug
  • S06 The page cache
  • S07 Folios, not pages
  • S08 Making it durable
  • S09 The whole descent

Everything else

  • The K0 workload corpus, recorded on real x86-64 SMP, regenerated nightly
  • The Layer Descent animation
  • The Syscall Tape in its final form, including diff mode
  • Eight blueprints at partial: syscall-entry, syscall-abi, file-object, ops-dispatch, vfs, page-cache, folio, block-layer
  • Two boss fights with graders, one for Part 0 and one for Part I
  • Beginner testing on at least three different devices, because v86 performance varies more than CI will ever show

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/pedagogySequencing, the beginner ramp and assessmentarea/syscallSyscall entry, the stable ABI, the syscall table and the userspace boundarykind/milestoneA milestone checklist, tracking the issues that close itpriority/p0Blocks the current milestone

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions