web space | website hosting | Business WebSite Hosting | Free Website Submission | shopping cart | php hosting

Building a Real Time Operating System

With lots of gory details

In the summer of 2001 I took the course CS 452 at the University of Waterloo. In this course I had the chance to build a Real Time Operating System with a Micro Kernel that used Send / Receive / Reply kernel primitives for IPC (Inter Process Communication).

This OS is very similar to QNX products. In fact one of the founders of QNX took this very course in the early 1980's. So inspired was he by the work he did at Waterloo that he founded a company in Ottawa to market his work.

Yes CS 452 has a long history - largely legendary about how bloody time consuming this damned course is!

If you have little programming experience you may want to get a good book on programming. I would suggest - if you are a serious aspiring system designer that you go buy your new bible right away, The C Programming Language. If you can already program in C no doubt you have already read this book that I will refer to as K & R from now on.

If you are just curious how a Computer Operating System works - not to worry, you have come to the right (if somewhat verbose) place. I will assume that the average reader has some experience programming in a simple language, like Basic or Pascal. I will also assume that you are familiar with loops, variables, procedures, arrays and so forth. I will try to explain some of this stuff in simple terms anyway.

I will also assume that you are going to expect me to recommend a good book on OS design in general. Which I will now do, this book is pretty good, at least the first edition was great, I bought it, for about $100, one month before the second edition came out. So I had to buy the second edition, also for $100 only a few months later. (Guess who wanted to kick himself in the head?)

FEMOS (Fast EMbed Operating System) source code:

Read this first.

FEMOS tutorials:

The Tutorials table of contents

Useful resources (some from the CS 452 course web page):

Brennan's Guide to Inline Assembly
This guide spells out in detail how to integrate assembly language into your C routines.

80x86 Instruction Set
This is a listing of all the Intel x86 instructions. Unfortunately, it uses the Intel names for the instructions; gcc uses a slightly different style for names.

The MULTICS (MULTiplexed Information and Computing Service) web site. MULTICS was in many respects the parent of Unix and thus Linux. Many important concepts are covered in papers written about that OS that actually describe concepts used in any "Grown-Up Operating System".

Intel Processor Documents, from Intel Corporation.


  1. The IA-32 Intel Architecture Software Developerí»s Manual, Volume 1: Basic Architecture
  2. The IA-32 Intel Architecture Software Developerí»s Manual, Volume 2: Instruction Set Reference
  3. The IA-32 Intel Architecture Software Developerí»s Manual, Volume 3: System Programming Guide

You are the person to see this site since work was started here in August of 2001.

[BACK] Take me back to Michael's home page.