Skip to content
β€œWhat I cannot create, I do not understand.” β€” Richard Feynman

This little book contains a series of projects based on egos-2000. The mission 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 most of the OS concepts for an undergraduate-level OS course (e.g., Cornell CS4411). The projects introduce the architectural support for OS one-by-one, which Cornell students found very helpful. For example, students would implement a preemptive scheduler without any knowledge of privilege levels.

OS conceptsArchitectural support
Hello, World!code, data, heap, stackuser-level ISA
User-level Threadsthread, yield, context switch
Preemptive Schedulerinterrupt and exception handlingcontrol register, timer
System Callinter-process communicationprivilege level
Virtual Memoryprocess, virtual address spacepage table translation
File Systemdisk block, inode, file, directory

Advanced projects ​

There are 3 advanced projects for a master-level course (e.g., Cornell CS5411).

OS conceptsArchitectural support
SD Card Driversynchronous I/Obus, memory-mapped I/O
Ethernet and UDPasynchronous I/O, TCP/IPplatform-level interrupt controller
Multicore and Lockmutex, boot loaderatomic memory operation

All the projects can run on the QEMU emulator as well as RISC-V boards. Next, let's get our hands dirty and have fun!

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