Menu:

Design and Sell Merchandise Online for Free

The Ada Microkernel Project (or TAMP): The plan

Following on from my hello world style kernel, I've decided to post a plan for what I intend to accomplish in regards to an OS design.

I've been thinking about OS designs for over 10 years on and off and have wanted to develop one. Originally, I was going to do it in C but as I now use Ada more and more I want to use this language for the implementation (and assembly where necessary). The main thing that has been stopping me from developing an OS is the thought that I didn't really know how to. I pretty much know the basics of the underlying core of an OS, e.g. setting up interrupts, memory management, etc. so that is, at least, a starting point.

So, here's the plan; develop a microkernel based OS using Ada. This OS should provide a microkernel, some basic services and be able to run some applications. I'm not aiming to provide a full OS, just something to learn from. I'm also not going to be trying to implement POSIX, it'll be something else entirely.

Targets

I intend for the OS to be portable to other architectures and it should be capable of being compiled for big-endian and little-endian machines. I'll also be aiming to provide versions for both 32-bit and 64-bit architectures.

This might seem a bit excessive, but I believe that the OS designer should start thinking about making their OS cross platform from the outset. Here is a list of the tools I will use:

These tools will be available on all Linux and Win32 platforms. I'm not too sure about MacOS X, I'm fairly sure that they have the GNU tools available, they definitely have GNAT. I'll be using Ubuntu Linux and compiling my own toolchain. I'll also be attempting to port a minimal Ada runtime so I can have full GNAT tool support (including ASIS) and I will be showing the build process of each relevant component.

The QEMU emulator provides a number of system targets:

QEMU provides these targets and this should keep me going for a while anyway. Also, by showing how to do memory managment using a software MMU I'll get more experience as will the reader.

I also forgot to mention, that apart from being different hardware, they'll also provide interesting challenges regarding the booting environment.

Write a comment

  • Required fields are marked with *.

If you have trouble reading the code, click on the code itself to generate a new random code.
Security Code: *