Process Structure

Guardian is a microkernel system: apart from the low-level interrupt handlers (a single procedure, IOINTERRUPT) and some very low-level code, all the system services are performed by system processes which run in system code and data space.

The more important processes are:

  • The system monitor, PID 0 in each CPU, which is responsible for starting and stopping other processes and for miscellaneous tasks such as returning status information, generating hardware error messages, and maintaining the time of day.

  • The memory manager, PID 1 in each CPU, which is responsible for I/O for the virtual memory system.

  • The I/O processes, which are responsible for controlling I/O devices. All access to I/O devices from anywhere in the system goes via its dedicated I/O process. The I/O controllers are connected to two CPUs, so each device is controlled by a pair of I/O processes running in those CPUs: a primary process that performs the work and a backup process that tracks the state of the primary process and waits to fail or hand over control to it voluntarily (“primary switch”).

    The main issue in the choice of primary CPU is the CPU load, which needs to be balanced manually. For example, if you have six devices connected between CPUs 2 and 3, you would probably put the primary process of three of them in CPU 2, and the primary process of the other three in CPU 3.

Process Pairs

The concept of process pairs is not limited to I/O processes. It is one of the cornerstones of the fault-tolerant ...

Get Beautiful Architecture now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.