Brian Bershad, Thomas
Anderson, Edward Lazowska and Henry Levy. User-Level
Interprocess Communication for Shared-Memory Multiprocessors. ACM
Transactions on Computer Systems, vol. 9, no. 2, May 1991, pages 175 - 198.
Abstract:
Interprocess communication (IPC), in particular IPC
oriented towards local communication (between address spaces on the same
machine), has become central to the design of contemporary operating
systems. IPC has traditionally been the responsibility of the kernel, but
kernel-based IPC has two inherent problems. First, its performance is
architecturally limited by the cost of invoking the kernel and reallocating a
processor from one address space to another. Second, applications that
need inexpensive threads and must provide their own thread management encounter
functional and performance problems stemming from the interaction between
kernel-level communication and user-level thread management.
On a shared-memory multiprocessor, these problems can be solved by moving the communication facilities out of the kernel and supporting them at the user level within each address space. Communication performance is improved since kernel invocation and processor reallocation can be avoided when communicating between address spaces on the same machine.
These observations motivated User-Level Remote Procedure Call (URPC). URPC combines a fast cross-address space communication protocol using shared memory with lightweight threads managed at the user level. This structure allows the kernel to be bypassed during cross-address space communication. The programmer sees threads and RPC through a conventional interface, though with unconventional performance.