Introducing Simplix, an Operating System Anybody Can Understand

Back in university, I took a few classes dealing with operating system design. These classes were extremely theoretical and, in some ways, helped me throughout my curriculum and my career, serving as a solid base I could then build upon to gain new knowledge. However, after spending a few years working with high level languages in sandboxed environments, you tend to forget how things work at the lower level, and that sometimes leads to less than optimal higher level code. As a consequence, a few months ago, I decided it was time for me to brush up on my core CS skills. However, I needed a tangible goal. And then I thought: why not write an operating system? OK, not a full blown operating system of course, but the seed of a very basic one (calling Simplix an operating system is a bit of a stretch since it cannot be used for anything actually useful) One that other people could look at and actually understand (Even MINIX, which was designed to be easy to understand by students, is not that easy to grasp without spending a lot of time hunched over the code) Here are the high level characteristics of Simplix:

  • Target architecture: PC with a single Intel 386 or better CPU
  • Monolithic, interruptible, non preemptible kernel
  • Hardware interrupt handling using the Intel 8259 PIC
  • Software interrupt handling
  • Basic management of physical memory
  • Peripherals: keyboard, video screen
  • Support for kernel threads and user space processes
  • Support for virtual memory using segmentation
  • Support for system calls

Here is a screenshot showing Simplix running inside the Bochs emulator:

Over the next few months, I will be posting several articles on this blog in an attempt to explain how Simplix works, so please stay tuned! In the meantime, you can already take a look at the complete up to date source code and even download it. Also, if you are interested in the topic of operating system development, I warmly recommend reading the bible of system programming: Operating Systems: Design and Implementation (Second Edition) by Andrew S. Tanenbaum and Albert S. Woodhull. I got mine used on Amazon for $8… Cheers!

4 thoughts on “Introducing Simplix, an Operating System Anybody Can Understand

  1. Dave R.

    Wow! I haven’t done any low-level programming since college, but I’ve always wanted to return to it. This seems like a great project to renew my enthusiasm! The source looks fantastic - commented well and full of links to online resources. I look forward to the future posts that explain it in more detail.

    By the way, my assembler knowledge is very rusty. What resources did you use to get back up to speed, Julien?




  2. Julien Lecomte Post author


    I will post a list of resources that were useful to me while I was developing Simplix, so please stay tuned.


Comments are closed.