β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 concepts | Architectural support | |
---|---|---|
Hello, World! | code, data, heap, stack | user-level ISA |
User-level Threads | thread, yield, context switch | |
Preemptive Scheduler | interrupt and exception handling | control register, timer |
System Call | inter-process communication | privilege level |
Virtual Memory | process, virtual address space | page table translation |
File System | disk block, inode, file, directory |
Advanced projects β
There are 3 advanced projects for a master-level course (e.g., Cornell CS5411).
OS concepts | Architectural support | |
---|---|---|
SD Card Driver | synchronous I/O | bus, memory-mapped I/O |
Ethernet and UDP | asynchronous I/O, TCP/IP | platform-level interrupt controller |
Multicore and Lock | mutex, boot loader | atomic 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!