Message passing is a style of parallel programming where instead of using shared memory and locks or other facilities of mutual exclusion, different threads of execution communicate via passing messages. Message passing systems are in principle shared nothing systems, even in cases where the underlying implementation of the message passing is implemented via shared memory like say in case of running MPI programs on large SGI multiprocessors.
While distribued object and remote method invocation systems like ONC RPC, Corba, Java RMI and similar are also message passing systems, the term is mainly used in High Performance Computing.