The Ita Operating System
The Ita Operating System is very basic compared to what is expected of most
operating systems. Many abstractions available in other OS's are not available
in the Ita OS.
Object System
Instead of having a file system, the OS provides an object system. The
object system provides a way of locating objects in a folder hierarchy.
The object system is entirely resident in memory, and there is no support for
external storage at the moment.
Instead of loading an application from disk, all applications are in memory.
Launching an application involves calling the applications Run method.
Coroutines
Coroutines are actually implemented at the OS level, instead of being
implemented in the compiler. There is a SystemCoroutine type that provides
the most primitive form of a coroutine. Other control flow mechanisms are then
implemented on top of the SystemCoroutine. For example, user level coroutines
and threads are implemented using the SystemCoroutine. It would also be
possible to implement exception handling using the SystemCoroutine class.
Threading
The Ita OS provides a cooperative multi-tasking environment. Threads are
only switched when an application calls Yield. In theory, all safe
code in the system could have compiler generated yields that would prevent
any one program from monopolizing the CPU. However the current system has no
such provision.
Drivers
Text Display
The operating system provides a Console class that provides
functions for writing to the text display. The class/driver takes care of
wrapping lines of text, scrolling the display and keeping track of the cursor
position.
Unsafe applications could access the text display directly through the
display's memory map, but well behaved applications should instead make use
of the OS console functions.
PS/2 Driver
The operating system comes with a PS2 keyboard driver. Since the CPU
lacks interupts, the keyboard driver will poll the PS/2 port when a key press
is requested. The driver tracks if certain keys are being held down (e.g. shift
or ctrl) and it also maps PS2 scan codes into ASCII values. Special extended
values are used for non-ASCII keys like the cursor keys.
|