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:
- User devices. These are devices created by processes, and it's the only inter-process communication mechanism present in the system.
- Kernel Devices. These are special devices created by the kernel, used to provide kernel services to a process – timers, memory allocation, etc.
- Hardware Devices. This is a mapping from real hardware to I/O devices. A special hardware device is the platform device, which gives access to the whole machine to a process.
The Process-Device interface
A process and a device communicate using three mechanisms:
- IO ports. Similar to Intel I/O space, a process can write, or read, an inline value to a specified port of the device. The meaning assigned to these action is device specific.
- DMA. A device can read or write directly to a process space. An I/O MMU mechanism is present so a device can only access memory explicitely exported by the process.
- IRQs. A device can send interrupts to a process.
The MH Process/Device Interface