MPI (Message Passing Interface) is a description of an interface that can be used to communicate between computational nodes to coordinate calculations. MPI alone is not a framework that can be used, you need an implementation of this Interface, which is available for a lot of systems and programming languages.
PVM is a complete system that can be used to distribute a calculation on multiple computers, from what I know about PVM it uses a messaging protocol, similar to MPI, internally. I think an advantage of PVM is that it handles a lot of overhead, that you would have to implement manually with MPI.
You might also want to look at BOINC (http://boinc.berkeley.edu/), which is similar to PVM.
MPI working over various communication links like ethernet and you need to run mpirun for openmpi or mpich realisation. It has realisations and running on Linux, Mac or Windows. You can get the number of processors on machine. And it even has realisation for GPGPU computation, look forward for MVIAPICH. MPICH even has graphic tool on windows and it works ok by scripts in shell.
PVM is working by starting on central node and you entering pvm typing "pvm", and you type "add" to add other node, so it`s started daemon process called "pvmd" or "pvmd3" on each machine, you can look at them by typing "conf". Pvm has it`s own environment and working over ssh/rsh, so you should take care of enviromental variables on each machine. It`s Linux only. And last commit to source was in 2009 year.
BOINC is for peer-to-peer computation. It`s to get the unused resources of given computer to work with scientific problem. It`s like someone gives his computational resources. It works on Linux, Mac and Windows. And hadn't get about it already.