Distributed shared memory (DSM) systems implement a shared memory model in distributed systems without physical shared memory. DSM provides a virtual shared address space between nodes. It overcomes high communication costs by moving data to the location of access. DSM research aims to build less expensive and larger parallel machines while eliminating programming difficulties of other architectures. DSM models include object, variable, page, and hardware-based approaches. Key issues in developing DSM involve granularity, memory coherence, replacement strategies, and avoiding thrashing. Common DSM algorithms are central server, migration, read replication, and full replication models.