The MH microkernel

Introduction

MH (short for murgiahack) is a microkernel under active development. It is aimed at supporting modern hardware and to provide security and isolation to underlying processes.

MH is built for modularity and ease of experimentation. It is meant to be used as a stepping stone for building modular systems. It achieves this by having only one building block, a I/O device, and by providing mechanisms for userspace programs to create, discover and use these devices.

Furthermore it is possible to express naturally the hardware present in the machine with the same abstraction, thus requiring no special interface to assign hardware to userspace programs.

Overview of a MH System

In a system running MH, each process has its own local bus. The kernel mantains a global list of devices.
If it has enough permissions, a process can add a device to its own local bus and use it.

There are three broad kinds of devices:

The Process-Device interface

A process and a device communicate using three mechanisms:


The MH Process/Device Interface

MH Process/Device Interface


Additional Resources

You can take a look at my FOSDEM2016 slides, the murgiahack experiment, for more (outdated) information.