Differing Address Space



next up previous
Next: Handler Execution Up: Implementation Previous: The Transport

Differing Address Space

In PVM and similar heterogeneous computing environments, a process's address space is not necessarily the same from machine to machine. Given this, the active messaging library must have some machine-independant way of specifying a location in either text or data memory. A common solution to this problem is to introduce the concept of a binding. A machine-independent identifier can be ``bound'' to a specific address a process participating in communication. In order to avoid the time to search a table, the AM library can provide a call to allocate these identifiers from a linear progression corresponding to the indices of an array. Before any communication is done, the user will have to store the desired address into the array position pointed to by the identifier. In this way, the address will be bound. Any incoming message wishing to write in the local hosts memory must decode this identifier into the corresponding virtual address. Extending this concept, three separate tables can be maintained: one for the addresses of request handlers, one for reply handlers, and one for data addresses. Thus, one address identifier can be associated with three different addresses and resolved by the context in which it is used. C macros can be provided to reference each of these tables, reducing unnecessary subroutine calls.



Jack Dongarra
Tue Feb 7 21:45:39 EST 1995