8.7. Process StructureGuardian 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.
8.7.1. Process PairsThe concept of process pairs is not limited to I/O processes. It is one of the cornerstones of the fault-tolerant approach. To understand the way they work, we need to understand the way messages are passed in the system. |
|
|
|
|
No comments:
Post a Comment