Step 1 of 8: Definition of DSM

Distributed shared-memory systems implement the shared-memory abstraction on multi-computer architectures, combining the scalability of network based architectures with the convenience of shared-memory programming.
 
A cluster is a form of multi-computer system which uses a collection of independent computers that are connected by a high-speed interconnection network. Since all communication between concurrently executing processes must be performed over the network, in such a system, until recently the programming model was limited to a message passing paradigm. However, recent systems have implemented the shared-memory abstraction on top of  message-passing distributed-memory systems. The shared memory abstraction gives these systems the illusion of a physically shared memory and allows programmers to use the shared-memory paradigm.