|
|
| Home | Introduction | Successes | Examples | Download | Install | Documentation | Discussion | Acknowledgments |
One of the most important aspects of the PUPS/P3 system is peer-to-peer communication between processes (which may be running on different hosts) which do not have any specific relationship (e.g. parent/child). This peer-to-peer communication is mediated by PSRP [Process Status Request Protocol]. Any PUPS/P3 process which is linked with the appropriate library may act as a PSRP server, which may be queried by processes such as psrp which implement the client side of the PSRP protocol.
PSRP client/server interaction can be either simple requests for information, for example the client can query the server to find out about:
In addition to these builtin commands, the user who owns the PSRP server may also extend the functionality of the server. There are two methods of doing this
These are functions which are hardwired into the server processes PSRP dispatch table when the server application is compiled.
These are dynamic (shared) objects which are attached to the running PSRP server via the POSIX dl interface. The interfaces for these objects are subject to dynamic strong type checking and may be defined either using a small C function call library or alternatively using an extended dialect of C called Dynamic C [D].
In addition to functions, the PSRP protocol permits objects of other types to be added dynamically to running server processes including:
Binary files which are mapped into the PSRP server
address space.
which are pesistent objects which may be shared between multiple processes running on different hosts. Shared heaps use a modified API based on malloc and use memory mapping in conjuction with a network file system to share pages of memory between processes which may be located anywhere on The Internet relative to one another.