segunda-feira, 20 de agosto de 2012

[*]AMOEBA::sistema operacional distribuído

O que é Amoeba?

O Amoeba é um sistema operacional que teve sua origem de um projeto de pesquisa na área de computação paralela e distribuída.

Foi desenvolvida na universidade Vrije Holanda por Andrew Stuart Tanenbaum juntamente com mais três alunos de doutorado. A princípio o desenvolvimento do Amoeba era alcançar um sistema operacional livre de qualquer plataforma. O primeiro protótipo teve versão Amoeba 1.0 em 1983 e ao longo do tempo evolui adquiriu por conveniência algumas características de um pacote de emulação UNIX.

Segundo os projetistas, o Amoeba atualmente visa os seguintes objetivos:
  • distribuição: conectar diversas máquinas, remotamente localizadas
  • paralelismo: permitir que tarefas individuais sejam executadas por mais de um processador.
  • transparência: Fazendo parecer ao usuário final, que existe apenas um computador por traz de todo o trabalho.
  • performance: Atingir todos os objetivos descritos acima, de uma maneira eficiente
Como é Amoeba?

O Amoeba foi projetado com duas asserções em mente:
1) Os sistemas terão um grande número de CPUs.
2) Cada CPU terá  dezenas de megabytes de memória.

A ideia da arquitetura do sistema é suportar a necessidade de incorporar um grande número de CPUs de uma forma não complexa. Suponha que você possa prover para cada usuário um sistema multiprocessador com 10 ou 100 processadores.

Provavelmente a solução seria dar um destes sistemas para cada usuário. Entretanto, talvez esta não fosse a melhor forma e nem efetiva de gastar o orçamento, principalmente porque a maior parte do tempo os processadores estariam ociosos para a maioria dos usuários, enquanto que alguns precisariam executar programas necessitando um grande poder computacional.

Todo o poder computacional está localizado em um ou mais conjuntos de processadores. Um conjunto de processadores é composto por um número de CPUs sendo que cada uma com a sua memória local e conexão em rede. As CPUs podem ser de qualquer tipo, diferentes arquiteturas. Quando o usuário entra com um comando, o sistema operacional escolhe dinamicamente um ou mais processadores para executar o comando.

Quando o comando é terminado, os processos são terminados e os recursos devolvidos para o conjunto de processadores. Os processadores por sua vez podem ser compartilhados, executando mais de um processo por vez.

Um segundo elemento na arquitetura do Amoeba é o terminal, é através dele que o usuário acessa o sistema (típico: terminal X, monitor, teclado e mouse). A ideia aqui é usar terminais baratos e concentrar o poder computacional no conjunto de processadores, embora seja possível executar programas no terminal. Por exemplo, ao invés de comprar 100 estações de alto desempenho para 100 usuários, poderíamos comprar 50 processadores de alto desempenho, que compõe o conjunto de processadores, e 100 terminais X pelo mesmo preço. Uma vez que o conjunto de processadores são alocados só quando necessário, um usuário ocioso bloqueia apenas um terminal  X e não uma estação.

Outro componente importante são os servidores. Na maioria das vezes estes servidores, por características específicas, executam em processadores determinados. Os servidores fornecem serviços. Um serviço é uma definição abstrata daquilo que o servidor está preparado para fazer para os seus clientes.

O microkernel Amoeba. O modelo de software adotado pelo Amoeba apresenta duas partes fundamentais: o microkernel, que executa em cada processador e uma coleção de servidores que fornecem a maioria das funções tradicionais de um sistema operacional.
O microkernel Amoeba executa em todas as máquinas do sistema (conjunto de processadores, terminal ou servidor). As funções básicas do microkernel são:
 1. Gerenciamento de processos e threads.
 2. Fornecer suporte para gerenciamento de memória (alocação/lib segmentos)
 3. Suporte a comunicação (ponto a ponto, em grupo).
 4. Tratamento de I/O de baixo nível (device driver).

Os servidores Amoeba.

Tudo que não é feito pelo kernel é feito pelos servidores. Desta forma, é possível minimizar o tamanho do kernel e melhorar a flexibilidade. O Amoeba é baseado no modelo cliente-servidor. Um conceito central no projeto de software é o conceito de objeto, que é visto como um tipo de dados abstrato. Os objetos são gerenciados por servidores, arquivos, diretórios, segmentos de memória, janelas, processadores, discos e fitas são exemplos de objetos. Quando um processo cria um objeto (arquivo), o servidor que gerencia o objeto (servidor de arquivos) retorna para o cliente uma capacidade (criptografada) para aquele objeto. Para usar o objeto, a capacidade associada ao mesmo deve ser apresentada. Todos os objetos no sistema, software e hardware, são protegidos, tem nome e são gerenciados por capacidades.

A maioria dos serviços do sistema operacional no Amoeba são implementados como processos servidores. Os servidores seguem um modelo único com o objetivo de conseguir uniformidade e simplicidade. O modelo e alguns exemplos de servidores são descritos nesta seção. Todos os servidores padrão no Amoeba são definidos por um conjunto de procedimentos stub. Servidores novos são definidos em AIL (Amoeba Definition Language). Os procedimentos stub são gerados por um compilador AIL a partir da definição dos stubs e colocados em bibliotecas para utilização por parte dos clientes. 

Tipos de Servidores:

Servidor Bullet (arquivos) / Servidor de diretório / Servidor de replicação / Servidor de execução / Servidor de boot / Servidor TCP/IP.

Para que serve?

O Amoeba é um sistema operacional projetado para que um conjunto de computadores independentes se apresentem a seus usuários como um único sistema de compartilhamento de tempo.

O principal objetivo, era a construção de um sistema operacional distribuído, totalmente transparente [TAN95][TAN98]. Após efetuar o seu login no sistema, ele pode editar e compilar, mover arquivos, e por aí vai. A diferença é que cada uma dessas ações utiliza diversas máquinas da rede, incluindo servidores de processos, servidores de arquivo, de diretório, etc, sem que o usuário tenha de se preocupar. Uma diferença importante entre o Amoeba e a maioria dos demais sistemas operacionais distribuídos reside no fato de o Amoeba não suportar o conceito de "máquina hospedeira".

O objetivo secundário do Amoeba é fornecer um ambiente de teste para experiências em programação paralela e em programação distribuída.

Quem usa?

O Amoeba aceita dois tipos de usuários. Os que utilizam o sistema da mesma forma que fariam com um sistema tradicional de compartilhamento de tempo, e outros interessados sem experiências com algoritmos distribuídos e algoritmos paralelos (TANENBAUM,1995).

4 comentários:

  1. Equipe (Cleide, Jussara e Renato):

    Obrigado pelo post, mais completo que o da equipe anterior.

    Valeu!

    ResponderExcluir
  2. A ideia desse sistema distribuído AMOEBA é muito legal, empresas que trabalham com muitas estações poderiam utilizar o AMOEBA e assim teriam um controle maior sobre seus terminais além de uma rápida troca de informações.

    ResponderExcluir
  3. Muito boa a explicação, parabéns!

    ResponderExcluir