En informática, la memoria compartida es la capacidad de memoria a la que pueden acceder y utilizar simultáneamente varios programas diferentes, lo que permite que esos programas compartan datos y eviten la creación de copias redundantes de la misma información. Los programas pueden configurarse para operar en diferentes procesadores, o todos utilizan el mismo procesador. A veces conocido como computación concurrente o computación paralela, este enfoque permite que múltiples usuarios compartan datos sin la necesidad de copiarlos a un programa diferente, un enfoque que ayuda a ahorrar tiempo a los usuarios finales y también hace un uso más eficiente de los recursos del sistema.
Por lo general, la memoria compartida en lo que respecta al hardware real se refiere al uso de bloques de la memoria de acceso aleatorio (RAM) que está disponible en un sistema informático de múltiples procesadores determinado. En este entorno, varios procesadores diferentes pueden hacer uso de la memoria disponible sin crear ningún tipo de interferencia o reducción en la eficiencia de los otros procesadores. Esto significa que todos los procesadores trabajan esencialmente con el mismo conjunto de programas sin ralentizar las tareas reales que ejecuta cada procesador.
Existe la posibilidad de que se desarrollen al menos algunos problemas con el uso de una configuración de memoria compartida. Este enfoque tiene algunas limitaciones en términos de cuántas unidades de procesamiento se pueden incluir realmente en el sistema multiprocesador. Esto se debe a que los procesadores a veces almacenan en caché la memoria. Con un número menor de procesadores involucrados, esto no afecta la eficiencia del sistema en gran medida. Para evitar este tipo de problemas, es imperativo asegurarse de que la cantidad de memoria de acceso aleatorio disponible en el sistema se mantenga proporcionalmente mayor que la cantidad de procesadores. Si lo hace, ayudará a evitar que se desarrolle cualquier tipo de problema de escalamiento o priorización, y evitará que el sistema funcione con una eficiencia inferior a la óptima incluso durante los períodos pico de uso.
La memoria compartida no es el único enfoque posible para administrar tareas ejecutadas por múltiples procesadores. Una estrategia diferente, conocida como memoria distribuida, esencialmente asigna capacidad de memoria a cada procesador que está actualmente en uso. Al igual que con la memoria compartida, existe cierto potencial para la creación de cuellos de botella, dependiendo de la cantidad de procesadores involucrados y la naturaleza de las tareas actualmente en ejecución. También existe un enfoque híbrido conocido como memoria compartida distribuida que busca aprovechar las fortalezas de ambos enfoques, al tiempo que minimiza el potencial para el desarrollo de cualquier problema operativo.