Even system calls are made by messages. When a task is created, two special mailboxes—the Kernel mailbox and the Notify mailbox—are also created.
The kernel uses the Kernel mailbox to communicate with the task and sends notification of event occurrences to the Notify port.
Only three system calls are needed for message transfer. The msg send() call sends a message to a mailbox.
A message is received via msg receive(). Remote procedure calls (RPCs) are executed via msg rpc(),
which sends a message and waits for exactly one return message from the sender. In this way, the RPC models a