Página anterior Voltar ao início do trabalhoPágina seguinte 


Clusters computacionais de alto desempenho (página 3)


Partes: 1, 2, 3

Bookman (2003), afirma que, basicamente um cluster Beowulf é um agregado de computadores cujas principais características são:

  • Nós compostos por hardwares comuns;

  • Todos os nós do agregado e a rede de interconexão utilizados exclusivamente para as funções do cluster;

  • Utilização do cluster somente para realização de computação de alto desempenho;

  • Uso de softwares livres em todos os nós;

O projeto original usava o Linux como sistema operacional em todos os nós, ficando como marca registada do Beowulf. Porém não obrigatório o uso do Linux, já que o critério básico é o uso de qualquer sistema livre. Mais adiante, surgiram variantes deste cluster rodando o FreeBSD e outros sistemas abertos. O motivo da exigência de sistemas abertos é o fato de que para implementação do cluster, diversas personalizações no sistema devem ser feitas e ajustadas, e com o uso de um sistema operacional aberto, este poderá ser personalizado e ajustado conforme as necessidades. Já em sistemas operacionais fechados, como o Windows, isto não é possível, limitando muito os ajustes durante o desenvolvimento do cluster.

Os maiores fatores que fizeram com que o Beowulf se tornasse bem-sucedido foi o seu baixo custo de implementação (devido ao uso de hardwares comuns e softwares livres), e também a grande gama de softwares livres disponíveis, como o Linux, Message Passing Interface (MPI), o Paralell Virtual Machine (PVM), compiladores de primeira categoria como o GCC, dentre diversas outras aplicações abertas que podem ser aplicadas na implementação dos clusters.

Pitanga (2003) ressalta que o cluster Beowulf foi criado objetivando atender a grande demanda de processamento exigidos cada vez mais por projetos científicos das mais variadas áreas, de forma a oferecer sistemas computacionais de alto desempenho a custos extremamente viáveis. Como os computadores pessoais e redes de interconexão tem evoluído muito rapidamente e os custos despencaram consideravelmente, não resta dúvida que o Beowulf ainda é e continuará sendo por um bom tempo uma saída economicamente viável para uso em ambientes de grande demanda de processamento.

O Beowulf vêm sendo amplamente utilizado em todo mundo, principalmente em universidades. Aqui no Brasil, diversas universidades implementaram este cluster, tais como a Universidade de São Paulo (USP), Universidade Federal do Rio de Janeiro (UFRJ), Universidade Estadual de Campinas (UNICAMP), dentre muitas outras. Outra implementação bastante notória do Beowulf foi feita pela Petrobrás, em 1999.

Segundo Pitanga (2003), o cluster Beowulf, assim como todas as outras arquiteturas computacionais, apresentam diversas vantagens e desvantagens. Dentre as vantagens, vale destacar:

  • Continuidade tecnológica, pois o hardware e software utilizado sofrem constantes evoluções e são facilmente acessíveis;

  • Flexibilidade de configuração, permitindo a configuração de clusters de pequeno à grande porte;

  • Escalabilidade, devido a facilidade de agregação de novos nós no sistema;

  • Alta disponibilidade, pois a queda de um ou mais nós escravos não afeta o sistema como um todo.

Dentre as desvantagens, as principais são:

  • Difícil desenvolvimento dos programas;

  • Um grande fator limitante no desempenho do sistema é a latência e limitação da largura de banda da rede de comunicação;

  • Não são todas as aplicações que podem rodar no cluster.

Quanto a arquitetura do cluster Beowulf, ela é bem simples, conforme a figura a seguir:

Monografias.com

Dentre os nós do agregado, um deles atuará como o nó controlador ou nó mestre. Este será responsável por distribuir as tarefas, monitor todos os demais nós e controlar o cluster como um todo. Os demais nós, chamados de nós escravos, ficam responsáveis por processar todas as instruções enviadas pelo nó mestre e depois devolvê-las para que o nó mestre possa juntar todos os resultados enviados por todos os nós escravos e assim gerar o resultado final consolidado, retornando-o para o usuário do sistema. É importante ressaltar que o usuário do sistema faz acesso e uso do cluster geralmente através do nó controlador.

Todos os nós do cluster são constituídos de computadores comuns com sistema operacional independente, e são interligados por uma rede de dados, como a Fast-Ethernet. Programas específicos e bibliotecas de trocas de mensagens (como o PVM e MPI, que serão tratos mais adiante) são implementados em todos os nós de forma a criar um ambiente paralelizado e pronto para executar tarefas com grande demanda de processamento.

  • OpenMosix

Segundo Dantas (2005), o OpenMosix surgiu como uma variante do projeto original Mosix da Universidade Hebraica. Basicamente ele é uma extensão do núcleo do Linux que implementa verdadeiramente um ambiente SSI em um cluster. Ele faz com que uma rede convencional de computadores rodando Linux se torne um supercomputador capaz de executar programas comuns, não sendo necessário o desenvolvimento de aplicações específicas para o cluster OpenMosix, já que o paralelismo é implementado no nível de núcleo do sistema.

Nesse cluster, os nós trocam informações entre si de forma a manter a carga de processamento balanceadas entre todos os nós do agregado. Diferentemente de outros tipos de clusters, como o Beowulf por exemplo, neste cluster não existe um nó que faça o papel de nó controlador. Todos os nós são iguais e qualquer um deles pode ser utilizado pelo usuário para execução de tarefas, pois o sistema atua de forma que todos os nós troquem informações e caso um nó esteja sobrecarregado, este passa parte de suas tarefas para outros nós do agrupamento.

O interessante é que novos nós podem ser agregados a qualquer momento, mesmo durante a execução de tarefas. Assim que ele é agregado ao sistema, imediatamente seus recursos ficam disponibilizados.

De acordo com Sloan (2004), no OpenMosix os processos podem ser migrados de forma totalmente transparente ao usuário entre diferentes máquinas que constituem o agregado, de forma a manter a carga de processamento o mais balanceado possível. Além das extensões no núcleo do sistema operacional, diversas ferramentas são agregadas aos nós para que o monitoramento e controle de migração de processos possa ser realizada.

Na prática, o funcionamento de um cluster OpenMosix é simples, exemplificada com a seguinte situação: suponha que existem dezenas de arquivos que deverão ser individualmente compactados utilizando um programa que faz uso intenso do processador. Uma vez iniciado a compressão simultânea de cada um desses arquivos, após alguns segundos estes processos começarão a serem migrados para outros nós do cluster que estão inativos (sem trabalho) ou com pouco uso. Desta forma, cada arquivo a ser compactado será realizado simultaneamente por cada um dos nós que o sistema tiver migrado os processos, deixando ao máximo a carga de trabalho equilibrada em os nós. Tudo isto é feito de forma totalmente transparente ao usuário, cabendo a ele apenas disparar o(s) processo(s) em um dos nós e deixar que o OpenMosix cuide do resto.

Além de aberto e gratuito e prover total transparência de funcionamento ao usuário, o OpenMosix possui diversas outras vantagens, sendo a principal delas o fato das aplicações não necessitarem sofrer alterações em seu código para rodar no cluster, graças a implementação a nível de núcleo de sistema, gerando assim uma imagem única de sistema (SSI) verdadeiro.

Este tipo de cluster também possui algumas limitações/desvantagens, tais como o fato de que se houver um excesso de migrações de processos entre os nós do agregado, isso pode acabar gerando uma perda de desempenho muito elevada.

  • High Performance Virtual Machine (HPVM)

De acordo com HPVM-Project (2010), o projeto HPVM visa incrementar a acessibilidade, usabilidade e performance de recursos computacionais distribuídos voltados para computação de alto desempenho. Além disso, visa reduzir os esforços necessários para a construção de aplicações paralelas que rodem de forma eficiente em sistemas distribuídos, além de aumentar o desempenho de execução desses programas.

Segundo Pitanga (2003), esse projeto almeja o desenvolvimento de um supercomputador com uso do sistema operacional Windows NT e hardware comum, além de tentar esconder do usuário toda a complexidade de um cluster, através de uma interface transparente.

Do ponto de vista do programador, o cluster HPVM é visto como um sistema constituído de quatro camadas, conforme figura a seguir e breve descrição de cada uma delas:

Monografias.com

  • Aplicações: as aplicações podem ser de alto ou baixo nível, dependendo da camada de API vinculada;

  • API: basicamente são quatro as APIs suportadas, a Fast Messages (FM), a Global Arrays (GA), a Message Passing Interface (MPI) e a Shared Memory (SHMEM);

  • Transporte: são implementadas utilizando a tecnologia de passagem de mensagens rápidas ou sockets;

  • Redes: suporta rede de alta performance como a Myrinet.

Uma outra característica importante deste cluster é o Dynamic Coscheduler (DCS), que é um módulo responsável por coordenar o escalonamento de operações independentes, possibilitando assim que uma aplicação paralela seja executada concorrentemente em diversos nós. Ele trabalha em conjuntamente com o sistema operacional no papel de sincronização dos processos em execução que necessitem de interações com os demais nós do sistema.

  • Solaris-MC

Segundo Dantas (2005), o Solaris-MC é protótipo de sistema operacional desenvolvido especialmente para ser utilizado em clusters de computadores. Ele é uma variante do sistema operacional Solaris e tem como objetivo fornecer um cluster transparente, com grande escalabilidade, facilidade de administração e ainda alta disponibilidade. Desta forma, ele cria a imagem de um sistema único (SSI) de forma eficaz, onde qualquer programa binário compatível com o Solaris original pode ser executado neste agregado, como se fosse um único supercomputador rodando o sistema operacional tradicional da empresa Sun Microsystems.

Pitanga (2003) afirma que o Solaris-MC faz uso de bibliotecas de passagem de mensagens, como o MPI, de forma a permitir que drivers e aplicações existem possam ser executados sem nenhum problema no ambiente distribuído. Para que isso seja possível, o sistema faz uso de um sistema de arquivos globalizado chamado PXFS (Proxy File System), de forma a estender as operações com processos por meio de todos os nós do agregado, permitindo assim o acesso transparente aos dispositivos remotos de forma a obter como resultado a criação de imagem única de um supercomputador.

Uma grande vantagem desse sistema é que a alta disponibilidade é amplamente enfatizada, de forma que se caso algum nó do sistema ficar fora do ar, o sistema como um todo continua operando normalmente. A maioria dos sistemas operacionais para sistemas distribuídos não focam tanto nessa questão tanto quanto o Solaris-MC. Uma desvantagem perante outras soluções é que o Solaris-MC é um sistema operacional de cluster puramente comercial, não existindo versão gratuita e muito manos aberta.

  • FERRAMENTAS DE MONITORAMENTO, ANÁLISE E OTIMIZAÇAO

Para gerenciar os clusters de computadores, de forma a monitorar seu funcionamento, analisar seu desempenho e otimizar suas funcionalidades, diversos softwares e bibliotecas de programação foram desenvolvidos para atuar junto aos agregados de computadores, visando facilitar a vida do administrador de sistemas e de redes. Pitanta (2002) cita diversas ferramentas, dentre elas:

  • bWatch – trata-se de um programa feito para monitorar o funcionamento dos nós do cluster. Ele monitora a carga e o uso de memória de todos os computadores, além de checar se todos estão funcionando corretamente;

  • Smile Cluster Management System (SCMS) – é uma suíte de ferramentas gráficas especificamente criada para gerenciar clusters Beowulf. Ela é composta de diversas aplicações que monitoram as condições dos nós, carga de processamento e diversos outros recursos que auxiliam a administração do cluster;

  • ScaLAPACK – é uma biblioteca de rotinas de alta performance para uso em álgebra linear, para execução em clusters e arquitetura MIMD de memória distribuída;

  • FFTW – trata-se de um conjunto de bibliotecas que auxiliam na computação de transformadas discretas de Fourier (DFT) em uma ou várias dimensões de dados complexos e de tamanhos variáveis;

  • Netpipe – é um medidor de performance do desempenho de redes baseados em TCP/IP. Ele monitora o impacto da rede no desempenho do cluster, permitindo que diversas variáveis sejam analisadas, como por exemplo a latência, largura de banda utilizada, etc;

  • Netperf – o Network Performance é um programa que atua de forma semelhante ao Netpipe;

  • LMBench – efetua diversas testes e análises de latência do cluster, como por exemplo no sistema arquivos, nas medidas de banda, uso de memória, leitura e escrita dos discos, atraso nas trocas de contexto, e muito mais;

  • MPBench – o Massive parallel Benchmark afere a performance de operações essenciais que ocorrem em clusters que trabalham com o sistema de passagem de mensagens PVM e MPI.

  • AMBIENTES DE PROGRAMAÇAO PARALELA

Como visto anteriormente, um cluster de alto desempenho atua realizando processamento paralelo através de seus nós, dividindo o problema maior em porções menores. Interligar os nós por uma rede local e instalar softwares de monitoramento e gerenciamento do agregado são apenas uma parte da implementação de um verdadeiro cluster.

Segundo Bookman (2003), um cluster paralelo tem como objetivo gerenciar e processar um conjunto maior de instruções do que em um sistema mono-processado. Para que o código seja executado entre os diversos nós do agrupamento, o sistema deve ser capaz de gerenciar os nós em termos de distribuição de tarefas. Os sistemas operacionais tradicionais, como o Linux, não são capazes de gerenciar processos entre diversos computadores de forma nativa (mas apenas entre diversos processadores), sendo essencial que o código-fonte do programa que será executado em paralelo trate isso de acordo com as necessidades específicas daquele ambiente.

O grande desafio é o de que os nós do cluster comuniquem entre si, de forma que possam trabalhar juntos no processamento de alguma grande tarefa. Nesse contexto, bibliotecas específicas de passagem de mensagens foram criadas para incrementar algumas linguagens de programação, permitindo que os programadores desenvolvam mais facilmente programas com suporte de execução em paralelo. Além disso, elas possibilitam manter um padrão único de programação, de forma que o um determinado programa desenvolvido por meio dessas bibliotecas possa rodar em qualquer plataforma de cluster que forneça suporta esses ambientes de programação.

De acordo com Sloan (2004), o controle para execução do programa em diversos nós de um cluster poderia ser feito de forma manual, porém seria muito trabalhoso, além do fato do programa desenvolvido só poder rodar exatamente naquele ambiente de cluster para o qual foi desenvolvido. Para facilitar isso, foram criadas bibliotecas específicas visando resolver dois pontos: simplificar a programação em paralelo e promover uma padronização. As principais bibliotecas são a Message Passing Interface (MPI) e a Parallel Virtual Machine (PVM).

A partir delas, programas paralelos e padronizados podem ser desenvolvidos em diversas linguagens, como em C e Fortran. Após a inclusão de uma dessas bibliotecas, o programa torna-se capacitado a ser executado entre os diversos nós do cluster.

  • Interface de Passagem de Mensagem (MPI)

De acordo com Sloan (2004), o MPI é uma biblioteca para programação paralela baseado no modelo de passagem de mensagens em computação paralela. Os processos do MPI são executados paralelamente, e cada um deles possui um espaço de endereçamento separado. Um processo remetente especifica os dados que serão enviados e o processo destinatário, e este por sua vez especifica a área de memória que irá armazenar a mensagem recebida, além da identidade do remente, dentre outas informações mais.

Na realidade, é mais correto considerar o MPI como sendo uma padronização do que especificamente uma biblioteca. O padrão MPI foi desenvolvido pelo MPI Fórum (MPIFORUM, 2010), que trata-se de uma comunidade de desenvolvedores composta por empresas envolvidas no desenvolvimento e produção de softwares e equipamentos de alto desempenho, tais como centros de pesquisas, universidades, dentre outras que fazem uso do processamento distribuído/paralelo.

Segundo Dantas (2005), devido a existência de diversas bibliotecas de trocas de mensagens para programação paralela e a falta de padronização entre elas, diversos problemas começaram a surgir, principalmente por causa da falta de padronização e a incompatibilidade entre diferentes plataformas de clusters. A partir disse cenário que foi criado o MPI Fórum e posteriormente a publicação do padrão MPI, resolvendo assim todos esses problemas.

A partir da criação desse padrão, diversas implementações comerciais e não-comerciais surgiram. Dentre as gratuitas, duas se tornaram bastante populares devido a sua robustez de funcionamento: a MPI Chameleon (MPICH, 2010) e o LAM.

Alves (2002, p. 91) destaca a eficaz independência de plataforma e portabilidade que o MPI oferece:

O MPI implementa um excelente mecanismo de portabilidade e independência de plataforma computacional. Por exemplo, m código MPI, que foi escrito para uma arquitetura IBM RS-600 utilizando sistema operacional AIX, pode ser portado para uma arquitetura SPARC com o S. O. Solaris ou PC com Linux com quase nenhuma modificação no código-fonte da aplicação.

De acordo com Alves (2002), a execução de um programa desenvolvido com o MPI, inicia um procedimento de criação processos menores, também chamados de processos filhos, a partir de um processo principal ou processo pai. Esses processos filhos são distribuídos para os diversos nós escravos do cluster. Cada nó escravo realizará o processamento dos processos filhos recebidos, devolvendo-os para o nó mestre após sua conclusão. A figura 9 representa a execução de um programa desenvolvido com o MPI.

Monografias.com

Basicamente, a comunicação consiste no envio e recebimento de mensagens entre os nós do cluster, por meio de uma rede de interconexão de alta velocidade, de forma que os dados fiquem partilhados num sistema de memória distribuída. Essas mensagens trocadas pelo MPI carregam várias informações, tais como: a identificação do processo emissor e receptor, endereço inicial de memória onde os dados serão alocados, mensagem de identificação e a identificação dos processos que poderão capturar a mensagem.

Dantas (2005) reforça que o MPI trata de uma padronização somente a nível de biblioteca de troca de mensagens, não tratando da questão de criação de uma camada de ambiente paralelo computacional tal como ocorre no PVM, que será tratado na seção 4.4.2.

  • Máquina Virtual Paralela (PVM)

De acordo com Dantas (2005), o PVM foi desenvolvido com intuito de oferecer, além da facilidade de programação em ambientes paralelos, a criação de um ambiente transparente de cluster de computadores de forma a unificar computadores homogêneos ou heterogêneos numa imagem de sistema único.

Diferentemente do MPI, o PVM não é composto apenas de biblioteca de programação paralela. Ele também cria um ambiente virtual paralelo. O PVM é dividido em duas camadas, sendo uma composta pela biblioteca de programação paralela PVM e a outra camada constituída de um conjunto de mecanismos que criam e disponibilizam para a camada superior, um ambiente paralelo computacional. Essa arquitetura de duas camadas é representada na figura 10.

Monografias.com

Comparando o PVM com o MPI, elas possuem em comum a camada superior, já que o MPI é uma biblioteca que provê a programação paralela em clusters. Já a segunda camada é exclusividade do PVM, pois como visto no MPI, ele não chega a criar um ambiente virtual paralelo.

Em suma, o módulo superior do PVM é representado pela biblioteca de troca de mensagens, que assim como no MPI, permite a programação facilitada para ambientes de clusters, bastando fazer a inclusão da biblioteca no código-fonte do programa e fazer uso de suas funções. Já o módulo inferior, é responsável por criar uma abstração de máquina virtual paralela aos olhos do usuário, feito através de um conjunto de componentes que gerenciam as conexões entre os nós, as trocas de mensagens, escalonamento e balanceamento de tarefas, além de prover um console de interface para o usuário.

Segundo Sloan (2004), o PVM teve seu desenvolvimento iniciado em 1989 e continuou a ser desenvolvido na década de 90 por um grupo de universidades americanas. Ele foi uma das primeiras bibliotecas de passagem de mensagens que possibilitou o uso de ambientes computacionais heterogêneos, ou seja, clusters constituídos de nós de configurações diferentes. Como o MPI é uma biblioteca mais recente e aperfeiçoada que o PVM, o MPI acabou se tornando mais preferível ao longo dos últimos anos por muitos usuários. Porém o PVM é tão robusto e confiável quanto o MPI, sendo a escolha um critério que cada um deverá adotar de acordo com suas necessidades e preferências.

Considerações finais

Nos dias atuais, a grande demanda por alta capacidade de processamento deixou de ser um luxo ou raridade para se tornar algo cada vez mais comum em diversos ambientes computacionais, tanto no meio científico quanto no meio industrial e comercial. Com o desenvolvimento de milhares de projetos diferentes nas mais diversas áreas, onde o menor tempo de processamento é necessário, os supercomputadores comerciais foram desenvolvidos para suprir esta necessidade. Como essas máquinas são muito caras, apresentam dificuldades de escalabilidade e preço de manutenção exorbitante, os clusters computacionais passaram a se tornar uma opção alternativa extremamente eficaz e economicamente viável, graças ao barateamento e evolução dos computadores pessoais e das redes de interconexão ao longo da última década. Mais especificamente para utilização em ambientes com alta demanda de processamento e geograficamente próximos, os clusters computacionais de alto desempenho acabaram se tornando muito populares e vêm sendo amplamente utilizados.

Com este trabalho, conclui-se que os clusters HPC são uma opção economicamente viável em relação aos supercomputadores comerciais, provendo diversas vantagens além de uma considerável redução de custos. O cluster Beowulf por exemplo, desenvolvido por um grupo de cientistas da NASA, foi um dos melhores exemplos de cluster HPC bem sucedido, onde a economia gerada foi em torno de 90% em relação a um supercomputador de capacidade de processamento equivalente. Este e outros clusters de destaque nesta categoria, como o OpenMosix, continuam sendo implementados, aperfeiçoados e utilizados em todo mundo de forma crescente a cada dia.

Ao longo da pesquisa, percebeu-se que apesar de todas as vantagens dos clusters de alto desempenho, como a alta escalabilidade, robustez, além do fator econômico, algumas desvantagens e desafios ainda existem neste tipo de sistema distribuído. Nem todas as aplicações podem rodar nestes ambientes, além do fato do desenvolvimento de programas para este tipo de sistema paralelo ainda ser complicado, mesmo com a existência de bibliotecas específicas como o MPI e PVM.

Percebeu-se também que um dos maiores fatores que podem comprometer o desempenho do cluster são as redes de interconexão. Por se tratar do barramento de comunicação dos processadores, caso a rede tenha muita latência ou seja instável, o desempenho do sistema como um todo será extremamente prejudicado.

Com este trabalho, foi realizada uma pesquisa e síntese do assunto baseando-se no principais autores brasileiros e estrangeiros, de forma a transmitir uma visão mais ampliada e concisa sobre os tipos de arquiteturas de alto desempenho, sobre os clusters e seus tipos existentes e principalmente sobre os clusters de alto desempenho e suas principais implementações como uma alternativa bem sucedida e de baixo custo em relação aos computadores comerciais de grande porte.

É importante mencionar que esta área específica de sistemas distribuídos ainda é uma linha da ciência da computação relativamente nova e há uma certa escassez de materiais sobre o assunto, se comparado a outras linhas de pesquisa. Inclusive em cursos de graduação na área de TI, como Ciência da Computação, este tema ainda é pouco tratado e desenvolvido. Por ser um tema de elevada importância e com diversas implementações criadas, é relevante que mais pesquisas e projetos científicos práticos sejam realizados nessa linha de estudo, tanto em cursos de graduação quanto de pós-graduação.

REFERÊNCIAS BIBLIOGRÁFICAS

ALVES, M. J. P. Construindo supercomputadores com Linux. 1. ed. Rio de Janeiro: Brasport, 2002.

BOOKMAN, C. Agrupamento de computadores com Linux. 1. ed. Rio de Janeiro: Ciência Moderna, 2003.

DANTAS, M. Computação distribuída de alto desempenho. 1. ed. Rio de Janeiro: Axcel, 2005.

HPCCOMMUNITY, 2010. Clusters That Produce: 25 Open HPC Applications. Disponível em < http://www.hpccommunity.org/f55/clusters-produce-25-open-hpc-applications-591/>. Acesso em: 30/05/2010.

HPVM-PROJECT, 2010. High Performance Virtual Machines. Disponível em < http://www-csag.ucsd.edu/projects/hpvm.html>. Acesso em: 03/06/2010.

MPICH, 2010. MPICH2: High Performance and Widely Portable MPI. Disponível em < http://www.mcs.anl.gov/research/projects/mpich2/>, Acesso em: 04/06/2010.

MPIFORUM, 2010. Message passing interface forum. Disponível em < http://www.mpi-forum.org/>. Acesso em: 04/06/2010.

MYRICOM, 2010. Myrinet-2000 Product List. Disponível em < http://www.myri.com/myrinet/product_list.html>. Acesso em: 27/05/2010.

PINHEIRO, J. M. S. Guia completo de cabeamento de redes. 4. ed. Rio de Janeiro: Elsevier, 2003.

PITANGA, M. Computação em cluster – O Estado da Arte da Computação. 1. ed. Rio de Janeiro: Brasport, 2003.

RIBEIRO, U. E. Sistemas distribuídos. Desenvolvendo aplicações de alta performance no Linux. 1. ed. Rio de Janeiro: Axcel Books do Brasil, 2005.

SETI@HOME, 2010. Seti @ Home. Disponível em < http://setiathome.ssl.berkeley.edu/>. Acesso em: 19/05/2010.

SLOAN, J. D. High performance Linux clusters - with Oscar, Rocks, OpenMosix & MPI. Gravenstein Highway North, Sebastopol: O"Reilly Media Inc, 2004.

TANENBAUM, A. S. Organização estruturada de computadores. 2. ed. Rio de Janeiro: Prentice/Hall do Brasil, 1992.

______. Redes de computadores. 4. ed. Rio de Janeiro: Elsevier, 2003.

WEBER, R. F. Arquitetura de computadores pessoais. 2. ed. Porto Alegre: Sagra Luzaatto, 2003.

WIKIPEDIA, 2010. Divisão e conquista. Disponível em: < http://pt.wikipedia.org/wiki/Divisão_e_conquista>. Acesso em: 07/05/2010.

A minha família que sempre me apoiou em todos os meus passos pelo vasto mundo dos bits.

AGRADECIMENTOS

Primeiramente a Deus, a minha família, a minha orientadora e a todos os professores da ESAB com que tive a oportunidade de ser aluno.

"Diz o Grande Ser: Considerai o homem como uma mina rica em joias de inestimável valor. A educação, tão somente, pode fazê-la revelar seus tesouros e habitar a humanidade a tirar

dela algum benefício."

(Epístolas de Bahá'u'lláh)

 

Autor:

Daniel Vahid Lima Tolouei

tolouei[arroba]gmail.com

ESCOLA SUPERIOR ABERTA DO BRASIL – ESAB

Monografia apresentada à ESAB – Escola Superior Aberta do Brasil, sob orientação da Profa. Beatriz Christo Gobbi

CURSO DE ESPECIALIZAÇAO EM REDES DE COMPUTADORES

VILA VELHA - ES

2010

Partes: 1, 2, 3


 Página anterior Voltar ao início do trabalhoPágina seguinte 



As opiniões expressas em todos os documentos publicados aqui neste site são de responsabilidade exclusiva dos autores e não de Monografias.com. O objetivo de Monografias.com é disponibilizar o conhecimento para toda a sua comunidade. É de responsabilidade de cada leitor o eventual uso que venha a fazer desta informação. Em qualquer caso é obrigatória a citação bibliográfica completa, incluindo o autor e o site Monografias.com.