Hacker News new | past | comments | ask | show | jobs | submit login
eXpOS – An Educational Operating System (exposnitc.github.io)
56 points by anandubajith on Aug 2, 2022 | hide | past | favorite | 8 comments



The idea of creating a simplified abstracted (for OS programming) virtual machine, and then teaching OS programming on top of that simplified abstracted virtual machine -- is not a bad one!

I'm guessing that students after having completed such a course, would then want to port their creation to actual x86/Arm/Risc-V/? hardware.

If so, then perhaps the last part of the course, the last week or so -- should be about taking the created simplified abstracted OS, and porting it to an actual hardware instruction set, and having it run "bare metal" on that actual hardware...


I see other possible paths, creating a AOT/JIT compiler from the bytecodes into specific hardware instructions.

Alternatively couple the lessons with a digital circuits design course and create a CPU for their bytecode instead, possibly via a FPGA.


Those are good ideas; sort of like a fully integrated "design a computer and Operating System from scratch" course...


What happened to the good, old Minix, which many of us used in CS school, and which used to come on a CD, attached to the Andrew Tanenbaum's OS book?


There have been many options for learning operating systems design and implementation for years and years.

There's Tanenbaum's Minix book. Besides "Operating Systems Design and Implementation" he also has "Modern Operating Systems" and "Distributed Operating Systems". He also has "Computer Networks". He has a couple editions of "Distributed Systems" with van Steen.

There's Comer's Xinu books, he of the "other TCP/IP books" besides Stevens. Stallings, as far as I'm aware known mostly for networking and security books, has an OS principles book that's seen half a dozen or more editions. Silberschatz has about a dozen editions of his book. There's Nutt, with "Centralized and Distributed Operating Systems". There's "Operating Systems: Three Easy Pieces" by Arpaci-Dusseau and Arpaci-Dusseau. Elmasri, Carrick, and Levine have "Operating Systems: A Spiral Approach".

Then there are all the advanced OS topics books, learn-as-we-build books like "Create Your Own 32-bit Operating System" by Burgess, and all the books about working inside individual operating systems like v6 Unix, System V, Solaris, Linux, BSD, or even going back to MS-DOS and AmigaOS on the pre-Unix micro side.


Still there, https://wiki.minix3.org/doku.php, and with version 3 one would learn about microkernels as well.

But I guess teaching Minix would fail one of the goals of eXpOS:

> The OS code has to be completely written by the student with no built-in code given, except for a bootstrap ROM code and code implementing an application level library interface. The programming support has been kept minimal to avoid high level programming tools hiding too many low level issues from the OS programmer. Essentially, the student has to do “low level programming” on a “high level hardware".


Andrew Tanenbaum's books are probably the most enjoyable CS book I've ever read.. He was an amazing educator. Minix was also really fun to hack. In my operating systems class, we worked on an homemade OS but looking at Minix was a much better and more fun introduction to OSes.


What I particularly like about how the Minix book is written (at least the 2nd edition copy I have) is how he goes over various sophisticated options for disc reading, scheduling, resource locks, and then says 'now, are you really going to need this for an OS running on a PC? No.' He then implements a solution which is only as complex as needed. It's refreshing going to it from other textbooks like say, the Dragon Book, which seem to pull the reader towards the path of greater complexity.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: