I've been working on hacking a BeagleBoard recently, and I've decided to design and implement my own OS to run on it.
I've decided to call my variation on the Eiffel language Brunel (for I.K. Brunel), and this operating system BrunelOS.
I expect to be able to create a GNU/BrunelOS, where GNU software such as GCC can run on the OS, but ideally, I'd like to implement new applications using Brunel instead.
Brunel is an Object Oriented language with design by contract, inline callbacks and with virtually invisible multi-threading/multi-processing facilities built in.
The implementation of multi-threading is quite simple; only one thread at a time may access any of an object's features and subsequent attempts by other threads to enter an object will be blocked until the first thread exits the object. Deadlock will be automatically detected and cause an exception in the thread that causes it. The only exception to this system will be Event objects that allow threads to block until the event occurs (or is cancelled).
BrunelOS is an operating system designed to work with the Brunel programming language.
BrunelOS does not have traditional processes, but a combination of memory maps and threads.
Objects and code exist in memory maps, and threads can pass from memory map to memory map within the system, but only ever to interface objects known to the calling memory map.