PVM (Parallel Virtual Machine) relies on the idea that the system the software runs upon is not fixed, but is dynamic. This dynamic approach forces application developers to avoid making assumptions about the underlying system. Such an approach offers two major advantages over a static resource world:
Although to a user or application developer only the API is of utmost importance, we briefly discuss here the internal workings of PVM in order to illustrate the difference between it and related systems.
First, PVM is generally considered as a basic message-passing system built upon a system of generic daemons. Specifically, PVM API calls cause the user's application to coordinate with a daemon pvmd to perform some operation (e.g., send a message or start some application). The daemons themselves define the virtual machine and provide the same consistent run-time environment across diverse platforms, thereby allowing for a single API.
When running on a netowrk of workstations (NOW), each host becomes a member of the virtual machine by running its own daemon. Applications become PVM applications by coordinating with these daemons via sockets and/or pipes. Thus, applications can become enrolled into PVM and then be controlled by it even if they were not started by it. Applications can also join and leave as many times as they wish, allowing them to live through several different virtual machines.
Shared-memory processor systems (SMPs), such as Sun MPs and SGI, require only a single daemon per host regardless of the number of nodes they contain. This method of process control is possible because they use the same Unix mechanisms as general workstations to initiate and signal processes. Dedicated MPPs, on the other hand, do not always offer such a consistent method of initialing and controlling processes. Like SMPs, they usually have only a single daemon running on a front end or service node. These daemons provide the same or similar facilities and services as conventional daemons except they may use different specialized system calls to interface with the MPP's nodes. Restrictions placed upon PVM by these run-time systems may affect the API functionality offered. or example, IBM's PVMe allows only an SPMD model to be used, and the Meiko CS2 allows only barrier operations across the whole application.
An example of a system that can appear as either a NOW or an MPP is the IBM SP2. In its NOW form it runs a daemon on each node as a conventional cluster of Unix workstations. As an MPP, it runs only a single daemon and uses the local partition management software to control resource allocation.