Skip to content
“What I cannot create, I do not understand.”    — Richard Feynman (1918-1988)

This little book contains a series of course projects based on egos-2000. The goal is to help students gain experience and confidence in creating their own operating system or similar computer systems in their future career.

Core projects

There are 6 core projects covering the key OS concepts for an undergraduate-level OS course such as Cornell CS4411. The projects introduce the architectural support for OS one-by-one which students have found very helpful. For example, students will play with timer and scheduler without any knowledge of privilege modes or page tables.

OS conceptsArchitectural support
P0: Hello, World!code, data, heap, stackuser-level ISA
P1: Cooperative Threadsthread, yield, context switch
P2: Preemptive Schedulerinterrupt and exception handlingcontrol register, timer
P3: System Call & Protectioninter-process communicationprivilege mode
P4: Virtual Memoryprocess, virtual address spacepage table translation
P6: File Systemblock, inode, file, directory

Advanced projects

There are 3 advanced projects for a master-level OS course such as Cornell CS5411.

OS conceptsArchitectural support
P5: Serial Device Driversynchronous I/Oserial bus, memory-mapped I/O
P7: Ethernet & TCP/IPasynchronous I/Oplatform-level interrupt controller
P8: Multicore & Locksbootloader, mutual exclusionatomic memory operation

All the projects can run on QEMU as well as real RISC-V hardware. Now, let's get our hands dirty and have fun with OS!

"... any person ... any study."