Nella programmazione di computer, la memoria condivisa è un metodo mediante il quale i processi del programma possono scambiare dati più rapidamente rispetto alla lettura e alla scrittura utilizzando i normali servizi del sistema operativo. Ad esempio, un processo client può avere dati da passare a un processo server che il processo server deve modificare e restituire al client. Normalmente, ciò richiederebbe al client di scrivere su un file di output (utilizzando i buffer del sistema operativo) e il server quindi leggere quel file come input dai buffer nel proprio spazio di lavoro. Utilizzando un'apposita area di memoria condivisa, i dati possono essere resi direttamente accessibili ad entrambi i processi senza dover utilizzare i servizi di sistema. Per inserire i dati nella memoria condivisa, il client ottiene l'accesso alla memoria condivisa dopo aver verificato un valore del semaforo, scrive i dati e quindi reimposta il semaforo per segnalare al server (che controlla periodicamente la memoria condivisa per eventuali input) che i dati sono in attesa. A sua volta, il processo del server riscrive i dati nell'area di memoria condivisa, utilizzando il semaforo per indicare che i dati sono pronti per essere letti.
Altre forme di comunicazione tra processi (IPC) includono accodamento di messaggi, semafori e socket.