분산 공유 메모리(Distributed Shared Memory, DSM)는 컴퓨터 과학에서 물리적으로 분리된 메모리들을 하나의 공유 주소 공간(shared address space)으로 취급할 수 있게 하는 메모리 아키텍처의 한 형태이다. "공유"라는 용어는 단일 중앙 집중식 메모리가 존재한다는 의미가 아니라, 주소 공간이 공유된다는 의미이다. 즉, 서로 다른 프로세서에서 동일한 물리적 주소를 참조하면 메모리상의 동일한 위치를 가리키게 된다.
DSM은 하드웨어와 소프트웨어 모두를 통해 구현될 수 있다. 하드웨어 구현의 예로는 캐시 일관성 회로(cache coherence circuits)와 네트워크 인터페이스 컨트롤러가 있다. 소프트웨어 구현 방식으로는 가상 메모리를 이용한 페이지 기반 접근법(page-based approach), 공유 변수에 접근하는 루틴을 사용하는 공유 변수 접근법(shared-variable approach), 객체 지향 방식을 통해 공유 데이터에 접근하는 객체 기반 접근법(object-based approach)이 있다.
DSM의 장점으로는 많은 수의 노드에서 확장성이 좋고, 메시지 전달(message passing)이 프로그래머에게 숨겨져 있어 프로그래밍이 단순해진다는 점이 있다. 또한 대규모 데이터베이스를 복제 없이 처리할 수 있으며, 멀티프로세서 시스템보다 일반적으로 비용이 저렴하다. 큰 가상 메모리 공간을 제공하고, 공통 프로그래밍 인터페이스 덕분에 프로그램 이식성이 높아지며, 프로그래머가 송수신 프리미티브를 직접 다루지 않아도 된다.
단점으로는 비분산 공유 메모리(non-distributed shared memory)보다 접근 속도가 일반적으로 느리며, 공유 데이터에 대한 동시 접근을 보호하기 위한 추가적인 보호 장치가 필요하다. 또한 성능 저하가 발생할 수 있고, 프로그래머가 실제로 생성되는 메시지를 제어하기 어려우며, 올바른 프로그램 작성을 위해 일관성 모델(consistency model)이 필요하다.
DSM 시스템에서 메모리 일관성(memory coherence)을 유지하는 것은 핵심적인 문제이다. 디렉터리(directory) 기반 메커니즘은 시스템 전체 노드에 걸쳐 데이터 블록의 상태를 추적하고 관리하는 방식이다. 기본적인 DSM은 각 블록에 대해 세 가지 상태(uncached, exclusively owned/modified owned, shared)를 추적한다.
일관성 모델(consistency model)은 노드 간 읽기와 쓰기 순서가 어떻게 보여야 하는지에 대한 규칙을 정의한다. 대표적인 모델로는 해제 일관성(release consistency)과 진입 일관성(entry consistency)이 있다. 해제 일관성은 프로세스가 임계 구역(critical section)을 빠져나올 때 변수의 새 값이 모든 사이트에 전파되는 방식이고, 진입 일관성은 프로세스가 임계 구역에 진입할 때 공유 변수의 값을 자동으로 갱신하는 방식이다.
분산 전역 주소 공간(Distributed Global Address Space, DGAS)은 유사한 개념으로, 클러스터의 각 노드가 자신의 개인 메모리 외에도 공유 메모리에 접근할 수 있는 소프트웨어 및 하드웨어 구현의 광범위한 부류를 가리킨다.