Hi!
I have been reading this board for a long time, now I decided it's time to participate!
My os design ideas have evolved over several years, now i've come to a design that is fully based on portable virtual machine bytecode, no isolated address spaces needed any more, a relational object filesystem for storage and full network transparency for every bit of the system (so every service can be shared or consumed over the net). That's a _very_ short description, let's call it the FutureOS for now.
Well, then I realized that this design is much too extraordinary to start OS coding with it ::), and so i've put together a 'more traditional' OS design for the beginning. Maybe, in the future I could evolve this design in the direction of the FutureOS.
My current OS design is a hybrid kernel, based on objects, interfaces and servers. Any service or resource is exposed via objects, which implement interfaces. An interface describes which operations are permitted on an object, and interfaces have unique types. An object can implement multiple interfaces of different types. Finally, the objects are hosted in servers, which can be kernel level servers (kernel modules) or user level servers (processes of its own). There are also in-process-servers that behave much like a dynamic library, but with the same object-based interface.
Operations on objects are issued with a lightweight messaging system, even for kernel-to-kernel calls. It should always be the same mechanism, independent from whether it is implemented in the kernel or in a user-level server. The point is that one could exchange a service implemented in the kernel (which is probably faster to use) with a user-space version (for more security and reliability) without needing to refit any piece of software that uses this service.
So you could set up the system in a completely monolythic fashion (using in-kernel versions of all device drivers, file systems, network services and the like), and on another machine in an almost pure microkernel style (placing everything in user-space processes).
Pretty tired for now...I'll continue tomorrow!
cheers
Joe