摘要 |
A master-slave multiprocessor (FIG. 1) is formed by connecting a slave processor (25) to an I/O slot of a uniprocessor, and by minimally modifying the uniprocessor's operating system. At initialization, one routine (FIG. 5) redirects slave interrupt vectors (200) to point to a common interrupt handler (FIG. 12). Before a process executes on the slave processor, another routine (FIGS. 9 and 10) corrupts execution stack bounds (217, 218) of the process. A non-interrupt operating system call during execution of the process causes an automatic firmware check (FIG. 3) of the execution stack pointer (203) against the stack bounds. Occurrence of an interrupt or encounter of a stack exception results in suspension of process execution and invocation of the interrupt handler or a slave stack exception handler (FIG. 11), respectively. Each handler calls a slave delete routine (FIG. 15) to restore the process' stack bounds to valid values and to transfer the process for execution to the master processor (12). On the master processor, process execution resumes at the point of suspension, and the operating system service required by the system call or interrupt is carried out.
|