1. Introdução: o que há de novo na memória distribuída compartilhada?
Na computação podemos classificar as memórias em três tipos: memória distribuída, compartilhada e distribuída compartilhada. Nos multiprocessadores , duas ou mais CPU’s compartilham uma memória principal comum. No esquema de memória distribuída, cada CPU tem sua própria memória privada, sendo que a comunicação entre as máquinas é realizada por troca de mensagens via rede.
Nos últimos anos tem crescido o interesse por sistemas de memória compartilhada distribuída (DSM), onde se permitem integrar a escalabilidade de memória distribuída com a maior facilidade de programação de memória compartilhada. As memórias são distribuídas fisicamente em cada nó, mas todos os processadores podem endereçar essa memória Oferecendo a abstração de um espaço de endereçamento lógico, a que todos os processadores de uma arquitetura distribuída têm acesso, apesar de fisicamente a memória ser local a cada um deles.

2. A tecnologia da memória distribuída compartilhada e máquinas paralelas
As máquinas Stanford DASH e Cray T3D utilizam memória distribuída compartilhada [GAULEVE 2003].
Orca é uma linguagem para implementação de aplicações concorrentes em sistemas de memória distribuída. O modo de Acesso à memória é chamado de NUMA (acesso não uniforme á memória), implementada com vários módulos que são associados um a cada processador, o espaço de endereçamento é único, e cada processador pode acessar toda a memória do sistema.

3. Como Melhorar o Desempenho das DSM
Os sistemas DSM permitem a integração da escalabilidade das arquiteturas de memória distribuída com a maior facilidade de programação do paradigma de memória compartilhada. No entanto, o desempenho alcançado pelos sistemas DSM é normalmente menor do que o alcançado com bibliotecas de troca de mensagens, isso se deve principalmente ao overhead adicionado pelo sistema DSM para localizar e buscar os dados e para manter a consistência entre eles [ARAUJO 2000].
DSM também permitem que aplicações desenvolvidas para arquiteturas de memória compartilhada possam ser modificadas de forma relativamente fácil para executarem em memória distribuída. Além da conversão de aplicações seqüenciais para o modelo de memória compartilhada é mais natural do que o seu desenvolvimento com troca de mensagens.
Um dos problemas de implementação é o de falso compartilhamento que causa comunicação desnecessária onde a comunicação em sistemas fracamente acoplados é uma questão crítica. O escalonamento de threads em sistemas DSM tem um desafio adicional, o de procurar manter a localidade dos threads em relação à distribuição das páginas da memória compartilhada pelas memórias locais. Para isso deve ser considerado o comportamento dos acessos as páginas de memória pelas threads. O escalonador deve decidir por alocar no mesmo processador thread que acessem o mesmo conjunto de dados, diminuindo assim o número de falhas remotas de página.
No momento que requisições remotas são realizadas, o processador que realizou a requisição fica sem trabalho útil a realizar. As técnicas de tolerância a latência procuram fazer com que o processador fique ocupado durante o tempo no qual a requisição é resolvida.

4. Uso de DSM na Coordenação de Multi – Agentes.
[GONZAGA] Em Sistemas multi-agentes, os agentes podem se comunicar de forma direta através de trocas de mensagens ou de forma indireta através de um blackboard. A comunicação por blackboard é mais simples, porém sua implementação em uma arquitetura distribuída não é eficiente. Nas arquiteturas com memória compartilhada fisicamente entre os nós a implementação da comunicação indireta é simples e direta. O blackboard é implementado na memória compartilhada permitindo que todos os elementos de processamento tenham acesso a ele. Estas arquiteturas, são caras e possuem, em geral, um número reduzido de nós.
As arquiteturas com memória distribuída são menos custosas e não têm limitação em relação à quantidade de elementos de processamento. Elas podem conter um número elevado de processadores, permitindo a criação de sociedades maiores e mais complexas com um bom potencial de desempenho.
A implementação de um blackboard em nessa arquitetura não é óbvia. A solução adotada tem sido eleger um nó como mantenedor do blackboard. As leituras e escritas são transformadas em mensagens explícitas para o mantenedor, solução não é satisfatória pois isso reduz de forma substancial a facilidade de comunicação fornecida pela utilização do blackboard, o mantenedor pode criar uma perda de desempenho no sistema
Com sistema software DSM TreadMarks para dar suporte ao blackboard distribuído o sub-sistema de memória compartilhada distribuída é capaz de realizar as trocas de mensagens de forma transparente aos agentes.
O gargalo no desempenho é reduzido pois as informações não estão mais limitadas a um nó e a uma única área de memória além de ser muito mais simples escrever um sistema de agentes em que a comunicação se baseia em leituras e escritas numa área compartilhada de dados.

5. Análise do Servidor Web Apache em Clusters OpenMosix com DSM

[SOUZA] O servidor web é a ferramenta responsável pela distribuição de do*****entos HTML através do protocolo*****, o Apache Web Server é um Servidor Web, multi - plataforma mais utilizada em todo mundo suas principais características são flexibilidade, altamente configurável, escalabilidade, pode ser configurada para diferentes funções e é composto de módulos separados onde cada um implementa uma característica diferente.
OpenMosix é uma extensão do kernel do sistema operacional Linux para criação de clusters vistos de maneira transparente pelas aplicações e usuário. Esta extensão faz com que uma rede de computadores sequenciais possa se tornar um cluster para aplicações Linux. Ao implementar esta extensão começam a se comunicar de forma a adapta - se ao volume de trabalho. Uma máquina pode se juntar ou sair do cluster a qualquer momento e o openMosix tenta continuamente otimizar o alocamento de recursos.
O Apache Web Server faz uso amplo de memória compartilhada, dificultando assim a migração dos processos relacionados e tornando a uma aplicação de difícil paralelização para o openMosix, processos que usem as mesmas regiões de memória compartilhadas podem migrar para outros nós de forma transparente e eficiente.
Para manter a consistência entre as diferentes copias das páginas de memória, usa - se um modelo conhecido como Eager Release consistency model.A atualização das páginas de memória no nó local é feito através de uma operação de writeback. Observa – se um sensível ganho de desempenho ao se aumentar à carga de consultas ao Servidor Web em clusters de quatro máquinas.

6. Conclusão

Os DSM têm várias vantagens e tem sido bastante utilizado pelos Clusters de computadores comparando com a s memórias distribuídas e compartilhadas.
O openMosix traz uma nova solução para a construção dos computadores de alta performance e de baixo custo com uma abordagem mais transparente ao usuário e altamente eficiente.

7. Bibliografia

    [ARAUJO 1999] ARAÚJO, EDVAR B. Um estudo sobre memória compartilhada distribuída. 1999. 59 pag. Tese. Universidade federal do rio grande do sul. Porto Alegre.
    [GAULEVE 2003] GAULEVE, JOSE ALBERTO. Arquitetura de computadores III. 2003. 30 págs. Dissertação. São Paulo.
    [ARAUJO 2000] ARAUJO, EDVAR BERGMANN. Melhorando o Desempenho de Sistemas de Memória Compartilhada Distribuída – Abordagens e Técnicas. 2000. 71 págs. Tese. Porto Alegre.
    [GONZAGA] GONZAGA, THIAGO et all. Uso de Memória Compartilhada Distribuída na Coordenação de Multi-Agentes. 7 págs. Tese. Rio de Janeiro.
    [SOUZA] SOUZA, MARCELO SOARES. Análise do Servidor Web Apache em Clusters OpenMosix com Memória Compartilhada Distribuída. 7 pags. Tese. Bahia