Kernel Fling OS

The following sections cover all the kernel specification in increasing detail the deeper you go.

This topic contains the following sections.

Introduction

The kernel is the core part of any operating system (of significance). It provides the lowest level code that sends commands to the hardware and handles interrupts etc. For this reason, its design has a very big influence on the entire operating system and so requires very detailed attention.

Language

The kernel will, so far as possible, be written in C#. For the bits which need to be written in assembler, they should be separated into separate, module-like projects that clearly states which architecture they are written for (e.g. x86-32, x86-64, etc.)

The assembly projects should be designed so that any other matching assembly project can be substituted in to target a different assembler version (i.e. CPU architecture).

Handling the C# Standard Libraries

Microsoft’s C# development tools come with the standard set of Windows-based libraries such as the System library. Clearly, these libraries are not available on Fling OS and so they must be programmed as part of the kernel.

There are two approaches to solving this issue that will be discussed below. (For the purposes of these discussions, when classes or methods are mentioned, also take into consideration fields, properties etc.)

For the discussions of the various solutions to the issue please see:

The conclusion drawn from the above dicussions is that Fling OS will use Approach 1 - DIY as it offers the best long-term prospects though use the Microsoft standard C# libraries as a rough guide / aid.

Kernel Sections

The built-in kernel sections are sections of the architecture which are compiled into the OS for release. In contrast to dynamically loaded sections which are compiled for release but stored as executable/binary files and loaded on demand at runtime.

Built-in

  • Pre-reqs – very initial code which runs after second-stage boot loader
  • Basic Debugger – code which allows the lowest level of debugging from immediately after the Bootstrap runs
Dynamically Loaded

(To be filled in future.)