MessiahAndrw wrote:Hobby OS's allow us to implement our dream system.
My goal is to write an operating system where programs are able to achieve maximum performance (hence I'm modelling it after a video-game OS). The reason I admire Dex and his OS is because it has a similar goal but the way we're going about it is completely different. In his OS you are given full access to the hardware and memory and do whatever you like, and there is no point recreating his OS otherwise I could just ask to join his team. Instead in my OS, we differ because I also admire the microkernel architecture, my OS will be multitasking (to the extent the Xbox 360 is - you can have background tasks) and I wish to allow applications to communicate through drivers rather than directly to the hardware (so applications are portable across a wide variety of hardware configurations and not recreate the problem DOS games had where every game had to support every piece of hardware).
As a result of selecting the microkernel architecture and sticking to my goal of maximum performance, I'm developing an IPC implementation so that a calling a function in another thread (that thread could be in another program) is not much less efficient than calling a local function, removing any need for ring changes or system calls. To do this safely (the microkernel goal) I'm taking the route of JITing 'safe' bytecode so I can ensure it doesn't access memory or call functions it shouldn't(I chose .Net because of the large number of languages you can develop in). My project differs from SharpOS and Cosmos since I my goal isn't to write a 100% .Net OS (my kernel and the JIT compiler are written in C++), as my choice of using .Net is limited to the user applications (including drivers and servers).
As a result of my decision to use safe bytecode I will be able to run any application or server (drivers excluded) on any platform I have ported the kernel to, including as a guest program on another operating system. This means I can debug the portable kernel code (such as the JIT compiler) as if were a native Windows application, and I can also test out my servers and applications without requiring a VM. Drivers as well as non-portable parts of my kernel are unfortunately excluded.
Wait so your building a high performance(Soft Real-Time-ish) OS where the applications run in .Net.. Isn't that like contradicting itself? That's like saying "I'm going to build the most secure OS" and then having all the applications run in ring 0. Sure you can get fast speeds in your OS... as fast as .Net can allow..