Hacker News

Two Thousand Line educational operating system released by Cornell University

12 points by argosopentech ago | 5 comments

jonjacky |next [-]

Previously, 2023, 19 comments: https://news.ycombinator.com/item?id=35982037

There are updates in the last several months, so it looks like the project is still active.

argosopentech |next |previous [-]

Cornell has a 2000 line educational operating system called EGOS (egos-2000 on GitHub) designed by professor Robert van Renesse. It has memory paging, virtual address translation, interrupt handling, process scheduling, system calls, and can run on QEMU or RISC-V.

burnt-resistor |previous [-]

Sometimes ultra-minimal is really too simple, and it lacks the userland and kernel bits that can be tweaked and built upon for course assignments that resemble things in the rest of the POSIX world.

MINIX 2.0 is mostly published in the text of Operating Systems: Design and Implementation (1997) by Tanenbaum. It's a superior OS for teaching UNIX philosophy and OS concepts rather than starting with a contrived OS that has no relevance to anything. It runs on vintage x86 machines (QEMU/etc.) no problem. About the first hack I added to it was upping the keyboard repeat rate to maximum and delay to minimum.

Some schools have drifted away by using more complicated OSes like FreeBSD as their generic UNIX and OS teaching platform, but this throws out the simplicity of MINIX <3.0. The MINIX kernel and basic userland fit in very little code, it can almost all fit in your head, there's a book that goes into detail about most of the important concepts, and it can be rebuilt on modern machines in seconds.

mrsvanwinkle |root |parent [-]

plus 1 for Minix. that's how Linus learned OS, from Tanenbaum, and how their public monolithic vs microkernel rift began. iirc xv6 while monolithic also allows for a microkernel implementation (maybe not the ideal way to learn about microkernels) and also has a POSIX layer which fits your "resembles the POSIX world" req. unsure if one still requires learning compiling for strong type checking for IPC with microkernels (if learning for a diy build)

burnt-resistor |root |parent [-]

Yeah, it was neat. Like "add a new process scheduling algorithm" as a class assignment. Good luck doing that in a complex, real OS or figuring it out in a contrived one that won't have relevancy to real OSes. At least MINIX is nominally UNIX/POSIX/C more or less and is somewhat related to ye olde UNIX design, internals, and software dev concepts, algorithms, and philosophy such that classic UNIX books are often helpful.

When seL4 came around, it helped me rethink microkernel architecture and limitations, especially IPC, security, and correctness. What is a mostly unsolved problem is coordinating a transaction and possible rollback of actions that touch multiple areas of responsibility without becoming a monolithic hybrid.