Request: Designing a Kernel Architecture
Posted: Tue Mar 02, 2010 11:48 am
Hullo. I'm looking for some knowledgeable individuals who may wish to help me design a kernel architecture. I'm designing a kernel for my operating system and have put a lot of thought into it so far. I've already built some versions of the kernel but am not satisfied with the overall design.With that in mind, I hope to implement a well-designed kernel. The kernel itself is somewhat of a mix between a UNIX like kernel and an NT kernel. The file system design and process/threading design have been rewritten. So far the rewritten design is absolutely minimal and incomplete. This is why I'm looking for some additional help in the design. Any help is appreciated.
Please note that for exceptional help in the design I'm willing to float a few dollars (USD) to those who contribute the best design. Probably about $50-$100 depending on how good and extensive the design is.
EDIT: I apologize, I forgot to list the general goals of the kernel.
Cheers,
-naota
Please note that for exceptional help in the design I'm willing to float a few dollars (USD) to those who contribute the best design. Probably about $50-$100 depending on how good and extensive the design is.
EDIT: I apologize, I forgot to list the general goals of the kernel.
- Minimal kernel, with a good standard. A microkernel with necessary support for "kernel mode drivers." (I actually prefer the term "Kernel Extension" in this case.)
- Although the kernel is minimal, it's only minimal to a certain degree. Certain things should be controlled by the kernel like process scheduling, interrupt handling, and other relevant portions. I'm on the fence about putting the VFS handler in the kernel, but feel it's probably necessary for a standard design.
- Object-Oriented objects. (That's not to say the kernel is to be made in C++, on the contrary. It's written in C. However, I don't see any reason not to support a COM like interface where C++ support may be available through pure virtual functions. The idea is to follow a standard programming model across all application sources. Regardless of how it's handled, function pointers should exist in the objects and these objects should not be (in theory) able to crash the system, through their own use.
- Should be able to be easily ported across multiple architectures; a hardware abstraction layer is important.
- The general goal of the OS is to be able to function as both a game console OS and as a normal desktop OS. But more particularly as a hybrid of both. The process scheduler has been designed specifically to meet these needs.
- Writing drivers should make sense and support future expansion. Hence an OO model for objects.
- The general model of the OS is that the user is doing one active task at a time and may have several background tasks. This compares to say, a smart phone such as the Android. Where as I can only see one thing at once and there aren't multiple windows visible, but background tasks exist.
- In short, be secure, stable, efficient, flexible, and able to handle more demanding tasks by default.
Cheers,
-naota