My blog. Like it? Subscribe to my feed or check out the archives.

My real-time operating system 03 Aug 08

I wrote a real-time microkernel x86 operating system this past term for CS 452. Unlike CS 350, I wrote this operating system starting with barely more than a blank vim window. Designing and implementing everything from the ground up was an illuminating (and exhausting!) experience; I learned a phenomenal amount.

On top of my OS I developed a set of drivers to interface with a VT100 terminal and Marklin train set. I wrote a train control interface that did a decent job of routing trains around the track while avoiding collisions. Youtube has a video my classmate took of the trains in all their quirky glory.

I wanted to share my work with the world, so I'm making the source code for my toy OS available. I'm also providing the kernel and train control design documents I wrote for the class. Hopefully someone has fun poking around my work! Everything is licensed under an MIT License.

And, finally, I'd like to thank Daniel Zapallow for his partnership in helping me to develop my OS.

Comments

John Jones 23 Jan 09

Wow dude, cool stuff!

RT www.privacy-tools.net.tc

Timothy 23 Jan 09

Really cool idea! Good job. I plan to look over the source at some point.

Kim 23 Jan 09

Had a quick look at the source code . Can't see :- 1) any proper documentation . No description of principles . No outline of structure . 2) any coding standards . Why is it any good ? Why is it better than anything else ? Why is it worth using ? Is it fundamentally different than what is currently available ? if so - does that fundamental difference provide it with fundamental advantages ? Is it easy to port and to use ? What's the porting time and cost ? etc. etc. etc.

rick 23 Jan 09

Kudos to you for opening your code. I hope other can learn from what you learned in the process.

Are you now moving onto hacking on some other open source operating system (or just getting your homework done)?

Vincent Toups 23 Jan 09

Kim, you are kind of being a douche - it is a project he wrote for a class. I am sure it is most useful to the teaming masses as an example of what something like this looks like. He is not, as far as I can tell, suggesting it will ever be useful to replace any other real time operating system or any such thing.

Christopher Allen 23 Jan 09

Ahh, good old CS452. I'm glad to hear it's still being offered.

I took it from Gordon Cormack, during the last term that it was still being held in the old Realtime lab, with the sprawling and heavily-modifed Lionel tinplate layout. It was a blast - terribly time-consuming, but so rewarding.

I trust it still has the fearsome reputation for inducing sleep deprivation that it used to...

Mike Keen 23 Jan 09

Kim,

I don't think Eric is trying to convince anyone to actually use his operating system in any kind of a production environment. It's just a pet project of his that he is releasing in case anyone wants to take a look. Anyone with actual CS knowledge can tell what is going on in his code pretty easily. It's fairly straightforward and simple.

c u next tuesday.

  • Mike

Kim 23 Jan 09

People need to be prodded - otherwise they often don't achieve . To use a couple of analogies :- 1) the person who thinks they are perfect at the age of 18 never gets past the age of 18 , 2) the person who exists in a 'don't criticise' bubble never gets ahead of the competition . Look at China - a country that has a lot of pioneering elements in common with the USA of old - and how it is using a critical approach to overtake the USA .

JeffMo 23 Jan 09

Kim:

People do need to be prodded, sometimes.

I think that's why people are prodding you not be a douche any longer; they think you need it.

Robin 23 Jan 09

I think Kim was expecting Windows Vista.

This project is clearly a proof of concept, not suggested as a final, usable environment,

Thomas 23 Jan 09

Kim,

I think you are going a bit on the exterme side. This isn't meant to be sold to a company so he does not need to address half the questions you listed. Nor do I think his intentions of releasing his code into the wild were to sway people to use it or to state "my code is so great, bow before it!". I think he simply wanted to show something he was proud of and let any other hacker that has a similar interest take a peek under the hood and make improvements/use.

kin 23 Jan 09

Kim,

You are a slutbag.

NotKim 24 Jan 09

Sorry kids -- oops I mean children -- Kim is quite correct. The OS and the project are cool, but if Eric can't communicate what he learned, then...did he learn anything? It doesn't matter if the thing is never used by anyone other than the author. What matters is that the author has some personal standards of excellence that he maintains for himself, regardless of who sees it.

Great that he released it. What he did, and why he did it are all part of the learning process - the journey in other words. Do you remember any of the journey, Eric, or did you just "get it to work"?

Eh, I might as well go outside and talk to the ants on the sidewalk. But don't come cryin' to me when the real world demands justification and coherent explanation.

Eric 24 Jan 09

I suppose I should clarify my intentions in releasing my tiny operating system: I wanted to share my code because fellow coders might find it interesting. I recognize that my OS is fundamentally a toy; any such system built in three months is a toy almost by definition. That's why I included the design documentation, to expose the whys and hows. My code--which I will be the first to admit is far from a shining beacon of OS design--doesn't always speak for itself.

So, yes, I certainly remember the journey. But I also got it to work, and what I learned from the experience is the sum of those two things. I'd like to think that this project was a microcosm of embedded systems design, and from that perspective I consider it a success because I learned a lot about the process.

anon 24 Jan 09

wow <3

kyber 24 Jan 09

Hey Kim, when you pull all nighters against the clock to complete a seemingly impossible project for your Real Time class and publish the results we'll come back to prod you for not achieving enough. Deal?

Hey Kim 24 Jan 09

Are you Kim Jong Il ?

Jim 24 Jan 09

Wow, 'NotKim' totally sucks, too.

AllKimSucks 24 Jan 09

I think all the kims here suck.

One cant demand anything from open source software.

Steve 24 Jan 09

Despite her rather abrasive manner, Kim has a good point - a more comprehensive set of documentation would make this better for a wider audience to understand Eric's project.

Steve++ 24 Jan 09

Keep up the good work, Eric. I, myself, have spent many hours in such labs, slaving over what essentially was just a toy (maglev/boat). The deployability of such items is questionable at best, and given the time, one cannot expect a posix compliant, real-time behemoth. However, this project fulfills a requirement others do not: simplicity. This is a very fundamental implementation of a pre-emptive, multi-tasking operating system. Having such an item available under this license, without all the noise of portability and other non-sense, will allow others to learn the important fundamentals from your code and increment from there.

You have the rest of your life to stress over standards and jackasses like Kim. Thank you for your contribution to the world, and I give you this thanks with no exception.

Post a comment