DHAKS
(Distributed Hybrid Architecture Kernel System)
Publications relating to DHAKS:
From DICE to DHAKS, Lessons learned from the DICE (Distributed Interpretive Computing Environment) distributed operating system project and how they have influenced design of the DHAKS (Distributed Hybrid Architecture Kernel System) distributed operating system., J. Michael Meehan, Philip A. Nelson, Jason Messer, conference proceedings of the International Conference on Computer Science, Software Engineering, Information Technology, e-business, and Applications (CSITeA-03), Rio de Janeiro, Brazil, June 5-7, 2003.
Team Members: Jason Messer (graduated)
Source Code:
DHAKS (Distributed Hybrid Architecture Kernel System)
This project concerns the
development of a distributed operating system based around the concept of an
interpreter for a VHLL. In the late 1980's and early 1990's I developed a
distributed operating system called DICE (Distributed Interpretive
Computing Environment), This system utilized the concept of an m-code engine
developed by Wirth at ETH in the Lilith project. We extended the m-code engine
into a multi-tasking interpreter and enhanced the instruction set for our needs.
The operating system was then essentially process 0 executed by the extended
m-code interpreter. The
DHAKS project is similar to the DICE project in that the operating
system kernel itself utilizes code for an abstract machine. It is different from
DICE in that this is not the only a portion of the kernel.
To build DHAKS we are utilizing as our starting point the i-code interpreter
developed by Griswold in the Icon project. We have ported Unicon to
operate under the Minix operating system. The i-code interpreter has been
attached to MINIX as a level 3 system task effectively creating an upper
kernel that communicates with the lower kernel through the level-2 system
task. In this manner we are able to write disributed operating system code in
a VHLL. The general structure of DHAKS is shown in the following figure.
|
4 |
Init |
User
Process 1 |
User
Process 2 |
User
Process 3 |
|
User
Process n |
|
3 |
Memory
Manager |
File
System |
Network
Server |
Upper Kernel |
|
|
|
2 |
Disk
task |
TTY
task |
Clock
task |
System
task |
Ethernet
task |
|
|
1 |
Process
management (lower kernel) |
|||||
The
code base for DHAKS is derived from two primary sources the MINIX 2.0.2
operating system and the Unicon project. [Tanenbaum97]
[Jeffrey http://unicon.sourceforge.net
] The MINIX
operating system is structured into four layers as shown above. DHAKS
splices onto the MINIX operating system structure to create a distributed
operating system. The four levels of the system correspond to the four processor
execution levels on an Intel architecture processor and the physical processor
is set into these modes when code is executed at these levels.
Level
1 is responsible for servicing interrupts and other low-level operations. It
creates the process abstraction that the rest of the system depends on.
It performs low-level scheduling activities for the local machine. Level
1 also creates the local process messaging capability. Any code that
requires access to the full instruction set runs at level 1.
Layer
2 is where what are called device drivers in traditional operating systems
reside. Each type of device
in the system has a device driver at this level. Level 1 and level 2 are
compiled into a single executable; the distinction between the levels is a
logical one not a physical one. There is one task as they are refer
to it in MINIX at level 2 that is not actually a device driver. This is the system
task. This level 2 entity creates a standard way that information is
transferred between components at level 1 or 2 and those at level 3.
This component is particularly important in DHAKS because it
creates the means by which the upper kernel communicates with the lower
kernel and other services running at level 3 such as the file system and memory
manager.
In
MINIX layer 3 provides various server processes.
The memory manager and the file system are found here. In addition, the
network services for the implementation of the TCP/IP protocol suite are found
at this level. DHAKS adds the upper kernel at this layer. The
upper kernel is an implementation of an i-code interpreter executing code
written in Unicon and compiled to i-code. This
is the hybrid kernel architecture found in DHAKS.
All code for levels 1 and 2 is written in a combination of C as assembly
language. The preexisting server processes we inherited from MINIX at level 3
are also written in C. The i-code interpreter is written in C. The code running
on the i-code interpreter is written in Unicon.
It is in this fashion that we are able to create level 3 services for the
distributed system in a VHLL.
Level
4 processes use the traditional UNIX approach wherein the init process is
created at boot time and all user level processes on the system are descended
from init. DHAKS supports multiple simultaneous users through local
serial devices and via network pseudo terminals.