|
23.
05.
2006
A Model for Reliable Asynchronous IPC
Neal Walfield
Hurd Team
Although synchronous unbuffered IPC can be made fast, it is not
universally appropriate. Using this model in the implementation of a
multi-threaded server with a single entry point requires connection
handoff thereby increasing the number of IPCs and potentially causing
unnecessary CPU migration in the case of SMP systems. Similarly,
reliable asynchronous message receipt requires a new thread to be
spawned to guarantee message delivery. This is particularly resource
costly for functions like poll where a task may wait on hundreds of
file descriptors.
These issues resulted in an extended discussion between Marcus
Brinkmann, Jonathan Shapiro and myself and resulted in some
fundamental changes to the Coyotos IPC model. Namely, the
introduction of first class receive buffers thereby divorcing the
message buffer from the thread and activations, allowing for
asynchronous event notification.
In my talk, I will detail the motivation of these mechanisms, some of
the policy imposed and provide some design patterns using these
constructs.
|