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.