akira

OS Kernel

developer · 2026-04-01 – 2026-05-01

Unix-like kernel developed for CMU 15-410, in partnership with Tianyou Zhang.

Overview

Normal coding where your API is the intel isr, arch, and system documentation… or something like that.

This project is usually done in teams of two, and my group’s kernel is somewhere under 10k lines.

Anyway, as the name suggests, this project involves implementing a kernel targeting an IA32 uniprocessor machine. That means implementing all the “stuff” needed to load and run multiple userspace programs: virtual memory, context switching, synchronization, fault handlers, etc. The kernel also supports a core set of syscalls, including but not limited to:

Those functionalities allow you to run a wide variety of C programs, such as:

I may write more comprehensive posts later on the subjects of conceptual material/ lessons/ advice for this class. For now, much of it can be summed up as:

  1. Be careful. Triple check bitmasks, hand-written assembly, and “trivial” pieces of code.
  2. Spam asserts/affirms. Cheap ones can and should remain in production code. Whenever you know a condition should hold true (or false), assert it.
  3. Design first, preferably on a whiteboard with your partner.
  4. When debugging, start with the possible causes that are easiest to verify. Additionally, remember that debugging is essentially hypothesis testing.
  5. Simics is surprisingly expressive. If you want to inspect “X”, it can probably show you “X”.