Kite Model OS Theory

This is my first attempt at OS layer design and implementation, so bear with me if I'm completely off tangent...

The diagram above shows the proposed relationship between components of the operating system. To begin with, I will explain the individual components:

1)  Hardware:  This is the physical hardware that a computer system is composed of.  This layer can only be accessed by the abstract layer. In other words, a program is made by interacting with the abstract, rather than the physical hardware.  This is done to allow for platform independence.

2) Abstract:  This is the layer that programs interact with.  The Abstract layer is essentially a group of small databases consisting of programming information used to interact with the physical hardware.  An Abstract layer is used to remove the physical hardware from the programming process.  This allows for platform independence of all programs written for this type of system. The Abstract Layer would have multiple levels within it:  High Level Abstracts which are generic to all systems capable of running the system and therefore safe to use (genericTextOutput, genericTextInput, genericSystem, genericStorage, etc.), Medium Level Abstracts which are more specific (2D Graphics, 3D Graphics, Keyboard Input, etc), and Low level abstracts which are specific to the actual hardware (ATI Mach64-GT, PCI Bus, 1.44" Floppy Drive, etc)

3) OS:  This is the management layer.  Programs need to get memory addresses and access file systems, this layer provides services to that effect.  This layer like all others on this level are a platform independent programs.

4) GUI: This layer provides the graphical user interface used within the OS.  In this model it consists of a very small set of functions that interact with the video display hardware to allow a windowed environment.  Most programs would be executed in this environment.

5) PROCESS:  These are the actual programs as they run.  Notice that each program has direct access to the abstract along with the OS.  This allows for direct access to all hardware capability, once the program is compiled.

6) AI: This is the artificial intelligence layer.  This layer observes and interacts with the program layers.  It has the capability to be programed to offer advice or modify actual program code, when implemented and enabled.  It should only be used to enhance the computing experience.

BOOT:
This type of system would start with a generic bootstrap loader specific to the target system. This would load the OS layer into memory, which would have process, and file I/O routines built in.  Next the OS layer would load configuration files associated with the runtime of the system.  If configured to do so, it would load a specified program/process, a single purpose program or a multi-program manager. Nothing out of the ordinary here...

RUNTIME:
OS is multi-threaded, so programs can run simultaneously, however a program, if necessary can ask for absolute priority.  This is necessary to facilitate real-time programs, which are necessary to industrial processes, and may facilitate high performance games. This real-time process is in no way multi-tasked, every background process is suspended completly.

GUI:
Non conformist GUI architecture. There will be sets of working GUI's that come with the system, however there will not be a standard GUI.  This allows for total customization. There will be some commonalities in feature sets, such as createWindow and destroyWindow, along with color sets, but no standard GUI.

NETWORK:
Network is run as an OS extension. In other words, independent to program processes.  However the network can be accessed as a device to allow programmers to allow program specific interaction. (i.e. games). The network is used for resource sharing, including storage, output devices, input devices, and processes.  The network should be mappable through any network like device (i.e. Network Cards, Cables, Modems, etc..)

PROGRAM DESIGN:
Programming is done in a platform independent language (Java, C++), that accesses the abstract layer as hardware objects.  Programming need not be limited to a specific language, but the language must compile/interpret using the abstract layer.  It will be possible to write in assembly, but should be entirely unnecessary.  The essence of the system is the compiler and it's feature set.

SUMMARY:
This model would allow for a Real-Time/Multitasking, Platform Independant/Platform Optimized, system that could be tailored to almost any application.