Memória Compartilhada - Linux
Em computação, memória compartilhada é uma memória que pode ser acessada simultaneamente por múltiplos programas com a intenção de prover comunicação entre eles ou para evitar cópias redundantes. Dependendo do contexto, os programas podem ser executados em somente um processador ou por pelo menos dois processadores distintos. O conceito de memória compartilhada geralmente não inclui usar a memória para a comunicação de diferentes threads dum mesmo processo.
No hardware, a memória compartilhada se refere tipicamente a grandes blocos de RAM que podem ser acessados por diferentes unidades centrais de processamento (CPU) em um sistema de multiprocessamento. Um sistema de memória compartilhada é simples de ser programado já que todos os processadores compartilham a mesma visão dos dados, e a comunicação entre processadores pode ser tão rápida quanto o acesso à memória na mesma posição.
O problema com sistema de memória compartilhada é que várias CPU necessitam acesso rápido à memória e por isso utilizam sistemas de cache na própria CPU, o que possui duas complicações. A primeira é que conexão da CPU para a memória se torna um gargalo no sistema. Computadores com memória compartilhada não possuem boa escalabilidade. A segunda diz respeito à integridade do cache, a condição de que ele esteja atualizado com as informações corretas, mais atuais. Mudanças no cache dum processador devem ser replicadas nos outros.
Alternativas ao sistema de memória compartilhada incluem memória distribuída e memória compartilhada distribuída, que por sua vez também possuem um conjunto de problemas próprios.
Em software, a memória compartilhada é tanto um método de comunicação entre processos quanto um método de conservação do espaço de memória. Para o primeiro, um processo pode criar uma área na RAM que outros processos sendo executados simultaneamente pode acessar. Para o segundo, ao invés de replicar cópias de blocos de memória entre diferentes processos, há