Nick Mudge Ignition Software Consulting & Development

I've decided to attempt to write an operating system.

Basically I want to be able to understand a whole system as much as I can and I want to make it as easy as possible for others to understand it as well. This is the main reason I want to write an operating system.

The reason I'm not just studying an existing operating system like Linux or Minix or MikeOS is because I think I will understand a system better if I write it myself and it seems more fun to me. I am of course studying those operating systems to learn to write my own.

Goals and Guides

The design of the system is pretty loose so far but I do have some general guides and goals for the system.

  1. Designed to explicitly take advantage of 64 bit processors.
  2. Designed to explicitly take advantage of multi-core or multi-cpu processors.
  3. Designed to take advantage of and provide virtualization i.e. operating system virtualization etc.
  4. It's a server operating system. Not designed to be a desktop operating system or anything else.
  5. It needs to be designed so that the system can be understood as easily as possible. It must be simple. The code base must be as small as possible.
  6. It must be good.

I'm not sure if the kernel will be a microkernel or monolithic or something else.


14 April 2008

Good luck Nick,

One thing I would suggest is to try and keep driver code out of kernel, that way you have more plug and play system....
14 April 2008

Have fun with x86 segmented memory and programming the PIC controller for interrupt handling :).
14 April 2008

I'm always wanted to write my own OS. But then is an more exotic language like haskell or scheme ;)
14 April 2008

At first glance, one might say Yeah right, good luck and forget about it. But then with a second look at history, companies told Bill Gates it's not possible to fit the Basic onto the Altair. He did.

A guy once sent an email letter to people telling them he is working on a new system just for fun, and to overcome some limitations in current system. That system is now used by millions worldwide for personal and commercial use. It's called Linux.

Wish you all the best, and that I come here decade later looking at your post and my comment, saying who would've thought of that :)
14 April 2008

A good reason not to look at existing systems is, ironically enough, given by Linus Torvalds.

By not looking at existing system, your mind won't get corrupted by their misdesign. He was talking about version control systems, though, but I don't see why it shouldn't apply to operating systems.
14 April 2008

Erlang on bare metal?
Black Meph
14 April 2008

I don't know how long-term your project may be, or where on the learning curve you are with the project, but for a very introductory overview of the issues involved, I'd recommend looking at Shimon Schocken's "Nand to Tetris in 14 Steps" info. I believe it covers OS issues at the end, so while it may be too introductory for you, it'll give you some ideas on what to keep an eye on. The Israel-based web reference for his book (and a course using it) is at:
Paulo Matos
14 April 2008

Trying something like that is worth of notice... blogging about it even more.

I wish you the best of luck but more importantly... loads of fun!
Chris Minnick
15 April 2008

The most important question, of course, is: What are you going to call it?
Nick Mudge
17 April 2008

Yea. I name popped into my head the other day: Astronaut
Name: (required)
Email: (required)
What has four legs, rhymes with bat and says, "Meow?" (One word answer.)
Spam Filter: