The polling CPU detects the arrival of a message and receives it into main memory. Then it sends an interrupt signal to the user CPU to force a context switch. The user CPU executes the handler and, at the end, traps into the kernel to restore the original context. To send a message, a handler on the user CPU deposits a send request in a shared mailbox. The message coprocessor uses that information to perform the actual send. Therefore, the processing performed by one CPU and the message sending performed by the second CPU can overlap.

Figure 2.6: General Purpose CPU:
An arriving message is read into a buffer by the CPU dedicated
to message transfer. It then interrupts the CPU running
the user application so it can perform a context switch to
the user level handler. Messages between CPUs are sent by
exchanging information through a mailbox in shared memory.
The dedicated CPU performs the actual send. A trap on the
first CPU is necessary to restore the original context.