Multi Process Micro Kernel

In November 2004 I began to write my own operating system. I hoped to use it as my "usual" OS at some point in the far future. At the moment however it is just some project I can learn much from. It's currently targetet to the i386, but should theoretically be rather portable.

The System consists of some low-level code, which does the memory and cpu initialization and scheduling, some high-level code, which does interprocess-communication, and a lot of small driver processes which get started during system boot and then provide the services needed by higher-level applications, either other drivers or applications. This way every function has a well defined place and right-boundaries are clearly visible. Furthermore a bug in a high-level driver does only compromise the subsystem the driver handles, but not the memory for example, because the most drivers run in ring 3, that is userspace.

If you'd like to have a look, or even contribute some code or ideas, the code is accessible at http://jens.schicke.hvf-bs.net/mpmk/ as a darcs repository. I'll write some licence soon, actually it's already clear it'll be open source, the question rather is what kind of open.

Current Status

i386 segmented memory coretestable
- syscallstestable
- task exitmissing
- schedulingtestable
i386 driverssome
- idle processdone
- io portstestable
- irq accessunclear interface
- mmaptestable
- taskdincomplete
generic driverssome
- VGA consolefar from done
- AT keyboardfar from done
documentationfar from done, unstructured
system libraryfar from done
posix librarymissing
applicationsmissing