-
Notifications
You must be signed in to change notification settings - Fork 0
M11 Capstone Tracks B and C: a driver, and a scheduler #12
Copy link
Copy link
Open
Labels
area/capstoneThe three tracks: filesystem, driver and sched_ext schedulerThe three tracks: filesystem, driver and sched_ext schedulerarea/driversThe driver model, modules, sysfs and debugfsThe driver model, modules, sysfs and debugfsarea/processTasks, fork and exec, the scheduler, context switching and signalsTasks, fork and exec, the scheduler, context switching and signalskind/milestoneA milestone checklist, tracking the issues that close itA milestone checklist, tracking the issues that close itpriority/p2Wanted, not scheduledWanted, not scheduled
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
area/capstoneThe three tracks: filesystem, driver and sched_ext schedulerThe three tracks: filesystem, driver and sched_ext schedulerarea/driversThe driver model, modules, sysfs and debugfsThe driver model, modules, sysfs and debugfsarea/processTasks, fork and exec, the scheduler, context switching and signalsTasks, fork and exec, the scheduler, context switching and signalskind/milestoneA milestone checklist, tracking the issues that close itA milestone checklist, tracking the issues that close itpriority/p2Wanted, not scheduledWanted, not scheduled
Roughly sixteen weeks. Two capstone tracks, deliberately different in kind from Track A and from each other.
Track B is a device driver, written twice. Once in C, once in Rust, against a supplied virtio device model that can be made to fail on command. A virtual device rather than real hardware, because real hardware excludes readers, is not reproducible, and cannot be told to drop a completion or send a spurious interrupt on demand.
The interesting deliverable is not the driver. It is the written comparison at the end: which of the reader's own C bugs the Rust version made impossible, which ones it did not, what the abstractions cost, and where
unsafewas unavoidable and what invariant each block was holding up. The kernel community is actively arguing about this and the reader will finish with an answer they earned rather than one they read.Track C is a sched_ext scheduler. A BPF program that is the scheduler, loaded at runtime, on a real machine. If it misbehaves the watchdog evicts it and the kernel falls back to the default.
That property is why this track can exist at all. Writing a scheduler has always been the canonical exercise you cannot actually do, because getting it wrong costs you the machine. Now a reader writes a scheduler for the machine they are sitting at, watches it fail, and gets the machine back. No previous generation of kernel learners could do this and no existing course has caught up.
Exit criterion. Reference solutions pass every rung in CI. The Rust and C comparison is written to blueprint section 9 standard. More blueprint bugs filed and fixed.
Track B, the driver
Track C, the scheduler