Kernel
The kernel core is the first module of SharpOS which is loaded. It provides basic OS services as well as runtime support. Because some of the code that implements runtime support (as well as most of the low-level OS code) cannot use objects to do it’s duties, much of this code is unsafe. The kernel core is the only place in SharpOS where unsafe code is allowed, with the exception of hardware-isolated processes.
SharpOS alleviates circular dependency concerns by having the lowest level of the kernel being written to target a limited subset of CIL which we have dubbed EIC. We have developed an AOT Compiler that can translate this code to native code that can be executed as an operating system kernel. This level of the kernel will implement both the basic low-level functionality of the operating system required for running on a given processor architecture, as well as the base of the common language runtime used to support full-featured EDC. Once these parts are complete, we will devise a method of informing the AOT Compiler that the code can be called to implement the features that are unavailable in EIC.
Transient Nature of the Kernel
The kernel currently contains a demonstration shell with a number of commands which are better suited in user space. This is a result of our first milestone which required it. Since processes do not yet exist and modules cannot yet be loaded, the commands are all inside of the kernel core. Much of the demonstration shell functionality is planned to eventually be moved out of the kernel. The remaining parts will be used as a diagnostics shell for administrators and debuggers.