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 systems or similar computer systems in their future careers.

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."