↑ Back to main site.


Experimental Protected-mode Operating System

About Programming an Operating System

Writing an OS from scratch seems like a daunting task. After all, there are some good Operating Systems (and some not so good) with large communities, lots of software and strong financial support form various businesses. The new Operating System can be expected to face enormous difficulties competing with these giants. So what's the point, really? I didn't think about any of this when I programmed EPOS. It was just a fun thing to do.

It was also a great way to learn. Learning by building is one of the best ways to learn and in the case of an OS this is the ultimate building exercise. There are no debuggers (unless you write one!), no convenient libraries and tools. It is up to your investigative effort to figure out what happens when your code breaks. Without a governing OS your code has total freedom. The abstraction of the programming language is destroyed very easily and code can behave in bizarre ways. You have to think out of the box, just like a private detective investigating a murder case. Every clue is important if you want to understand what's happening.

Building a multi-tasking OS is also a way to understand parallel programming, synchronization, and the target processor architecture; It is an exercise in designing a complex system. And it is a way to gain in-depth understanding of how programming languages work.

Having said this, I do encourage people to write an OS, but without getting carried away into details. Keep your focus. Writing an OS is a scary task but it can be great fun.

About the Source Code

Currently I have published only the source code of the kernel ( because I think it is the most interesting part ). There are also some drivers, the file system, and a couple of user programs that I may publish in the future. The source code of EPOS is available under 2-clause BSD license. You are at liberty to use EPOS in your own projects as long as you respect the terms of the BSD license.