Categorias

Sistemas Distribuídos

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS

INSTITUTO DE EDUCAÇÃO CONTINUADA

Trabalho de Disciplina Sistemas Distribuídos

Sistemas Distribuídos

e suas aplicações

Claudio Vieira Rios

2009

Claudio Vieira Rios

Sistemas Distribuídos

e suas aplicações

Trabalho apresentado à disciplina Sistemas Distribuídos, do curso Pós Graduação de Redes de Computadores da Pontifícia Universidade Católica de Minas Gerais, como requisito para a provação na disciplina.

Professor: Marco Aurélio de Souza Birchal

Belo Horizonte

2009

Resumo

Os sistemas distribuídos são amplamente utilizados em diferentes soluções e aplicações nos dias atuais, mas não há um sistema operacional distribuído, ou seja, ainda não se criou um sistema específico com tal finalidade, muito embora exista estudos e algumas organizações importantes envolvidas neste processo. Este trabalho descreve o que é um sistema distribuído, quais os seus elementos, suas camadas e suas aplicações como também trás exemplos de implementação e o quais comparações foram feitas utilizando as características de um sistema distribuído para decisão de construção de software com determinada arquitetura.

Foi utilizado como metodologia a pesquisa bibliográfica para conceituação e base de argumentação para o estudo demonstrado neste trabalho.

Palavras-Chave:

Sistemas distribuídos, sistemas operacionais, comunicação entre processos.

SUMÁRIO

ABREVIATURAS

OSI Open Systems Interconnection

ISO International Organization for Standardization

RFC Request For Comments

RMI Remote Method Invocation

UDP User Datagram Protocol

TCP Transmission Control Protocol

SOR Sistema Operacional de Rede

RAID Redundant Array of Independent Disks

IP Internet Protocol

CAPÍTULO 1 – INTRODUÇÃO

1.1 Considerações Preliminares

A utilização de redes de computadores e conseqüentemente dos sistemas que nela há muda consideravelmente e as aplicações remotas estão incluídas neste contexto. A implantação e delineamento de projetos de sistemas distribuídos ainda não foi definida por uma RFC – Request For Comments, ou por um órgão normalizador qualquer em virtude, principalmente, das características que envolve essa tecnologia de processamento distribuído.

1.1.1 Situação atual

Vários produtores de softwares e hardware têm se esforçado no sentido de criar soluções que possam servir de base para criação de um padrão, por exemplo as aplicações seguintes: CORBA, Java RMI, Java Sockets.

Apesar da quantidade de material bibliográfico e de conhecimento por parte de pesquisadores, empresas e do meio acadêmico com os quais já seria possível a construção de sistemas distribuídos, veremos que esta solução não é tão simples e que existe formas concorrentes ao desenvolvimento destes sistemas.

1.1.2 Metodologia de pesquisa

O estudo detalhado dessa categoria de sistema e sua aplicação é o tema central deste trabalho que visa o detalhamento, pesquisa atualizada das soluções hoje implementadas e embasamento teórico.

1.2 Motivações para a Realização do Trabalho

Por se tratar de um tema com pouca divulgação, tanto na mídia convencional quanto no meio acadêmico e por ter seu contexto muitas vezes confundido com outros, como processamento distribuído, a escolha de se fazer estudo sobre aplicações dos sistemas distribuídos se deve a suprir tais necessidades tanto do autor quanto a criar material de cunho científico que possa auxiliar futuras pesquisas do meio acadêmico.

1.3 Objetivo

Obtenção de conhecimento do assunto e criação de conteúdo específico da área de tecnologia da informação sobre sistemas distribuídos.

1.4 Estrutura do Trabalho

No Capítulo 2 foi feito a revisão literária com um introdução sobre o tema deste trabalho que são os sistemas distribuídos, onde é detalhadamente feito estudo com base no autor Tanenbaum. É também neste capítulo citado as vantagens e desvantagens dos sistemas distribuídos, as diferenças básicas entre ele e o sistema monoprocessador, descrito sobre as camadas do sistema, exemplicado o uso destes sistemas como uso de Sockets, SOR, RAID, os trabalhos relacionados e por fim a análise crítica.

No capítulo 3 é feito as conclusões finais do trabalho.

CAPÍTULO 2 – REVISÃO DA LITERATURA

2.1 Introdução e revisão literária

A junção e aplicação de dois grandes grupos de tecnologias, redes de computadores e microprocessadores com poder de processamento cada vez maior, permitiram a criação da base do que convencionalmente se chama de sistemas distribuídos (TANENBAUM, 1995).

Segundo Tanenbaum, 1995, a possibilidade de construção de sistemas distribuídos em si não constitui uma boa idéia. O autor afirma que, devido a existência das tecnologias atuais, é possível ter as soluções de sistemas distribuídos com todas as eficiências necessárias devido ao grande poder de processamento existente nos processadores atuais e uso das diversas redes existentes.

Desta forma é importante conceituar e conhecer profundamente alguns termos utilizados neste trabalho:

  • Computação distribuída, que segundo Deitel, 2008, é um fenômeno da tecnologia computacional que permite que a computação de uma organização seja realizada, não mais por um computador central, e sim distribuída através de redes para os lugares onde o trabalho da organização é realizado.

Complementando a compreensão do termo, Tanenbaum, 1995, cita que para ser considerado um sistema distribuído a solução tem que oferecer, tendo em vista tanto a ótica do hardware quanto a do software:

- Transparência – necessário fazer implementações no projeto de forma que o conjunto de máquinas seja visto como um único sistema de tempo compartilhado pelos seus usuários e sistemas clientes. O autor cita também que o que deve ser percebido pelo usuário é a agradável surpresa da melhoria de performance ao executar sua tarefa em um sistema de tempo compartilhado se comparado a mesma execução em um sistema com um só processador.

Quanto a transparência o sistema tem de atender alguns tópicos.

Transparência de localização de seus recursos: usuários do sistema não sabem onde estão localizados os recursos de hardware quanto os de softwares. Deve-se projetar para que o sistema responda a comandos digitados e respostas obtidas de forma semelhante ao sistema com um só processador. Relacionado aos programas é necessário que as interfaces das chamadas de sistema se torne invisível a presença de vários processadores. Em relação aos nomes dos recursos, não é aceitável que a codificação possa revelar a sua localização, como por exemplo o uso de nomes do tipo /servidor3/programa1.c.

Transparência de migração de seus recursos: permitir a migração dos recursos computacionais de um lugar para outro sem que isso afete ou seja percebidos pelos usuários dos sistemas e que para fazer essa migração não seja necessário que altere os nomes dos recursos.

Transparente à replicação de seus recursos: o sistema deve fazer a cópia adicionais dos recursos, como arquivos, de forma que o usuário não perceba ou que, para executar essa operação não seja obrigatória notificar o usuário.

Transparente à concorrência: os usuários não devem notar a presença de outros usuários. Os usuários são independentes.

Transparente ao paralelismo: a aparência que um sistema distribuído deve ter para seus usuários tem de ser a mesma de um sistema tradicional, fazendo uso de um único processador com tempo compartilhado. Tanenbaum, 1995, faz um alerta importante: “A transparência ao paralelismo deve ser encarada como o supremo objetivo de todos os projetistas de sistemas distribuídos. Quando isso for obtido, o trabalho estará terminado, e poderemos partir para novos desafios em outros campos.”

- Flexibilidade – Existe uma barreira a ser vencida neste quesito que é o uso de kernel monolítico. Este tipo de kernel foi simplesmente ampliado as suas funcionalidades como a facilidade de rede e de integração de serviços remotos. Já o microkernel fornece basicamente quatro serviços: Mecanismo de comunicação entre processos, mínimo de funções para gerência de memória, mínimo de funções de gerência de processos e de escalonamento e por fim, funções de entrada/saída de baixo nível. Enquanto o kernel monolítico fornece sistema de diretórios, sistema de arquivos, gerência completa de processos e manipulação das maiorias das chamadas de sistema, o microkernel não, pois o objetivo é mantê-lo o menor possível. Com uso de microkernel, todos os serviços são implementados como serviços, ou seja, se o usuário deseja acessar um arquivo, o sistema cliente manda uma mensagem para o servidor específico que faz esse trabalho e devolve o resultado ao processo que enviou a mensagem. A modularidade deste processo é a grande vantagem. Desta forma a flexibilização é atingida pois todos os clientes terão uma forma única de acesso aos serviços independentemente de sua localização.

- Confiabilidade – Tanenbaum, 1995, afirma que “Um dos objetivos que se buscava com a construção de sistemas distribuídos era fazê-los mais confiáveis que os sistemas centralizados, baseados em um único processador.” A confiabilidade se baseia na idéia de que, se um destes computadores ou recursos computacionais deixarem de funcionar, por qualquer que seja o motivo, a disponibilidade dos serviços, visto de forma global, será mantida. O fator tolerância a falhas está intimamente relacionado com confiabilidade, desta forma os sistemas distribuídos devem ser projetados para mascará falhas eventualmente ocorridas, ou seja, escondê-las de seus usuários mas sem prejuízo de perda de dados por exemplo. O que é aceitável é que o usuário perceba uma eventual queda da performance, mas essa perda de performance também pode ser projetada para não ser percebida.

    • Performance – O sistema com um todo deve ter um nível aceitável de performance para a finalidade ao qual foi projetado. Uma métrica utilizada é o tempo que leva para execução de uma determinada tarefa em um sistema distribuído deve ser menor que se leva para executar a mesma tarefa em um sistema com único processador. Na realidade as métricas utilizadas são o tempo de resposta e o throughput (números de job por hora). Um fator importante que influencia na performance de sistemas distribuídos é a comunicação que é um item chave do funcionamento para estes sistemas. A questão do paralelismo da granularidade fina traz consigo um problema: as vezes não é viável o envio de um processo ou alguns processos pequenos para serem executados em servidores com sistemas distribuídos visto o custo de tempo com o transporte de dados, o que, ao contrário, o paralelismo de granularidade grossa é indicado por produzir melhores resultados.

- Escalabilidade – Deve-se manter em servidores distintos com localização geograficamente distribuídas os vários serviços de algoritmos, componentes do sistema e base de dados. Além disso, o sistema não permitirá que nenhuma máquina tenha informação sobre o seu estado, as decisões das máquinas são baseadas nas informações localmente disponíveis, possíveis falhas em máquinas não deve interferir no funcionamento do algoritmo e não deve existir nenhum tipo de relógio (clock) centralizado.

2.1.1 Vantagens e desvantagens

Os sistemas distribuídos oferecem diversas vantagens tecnológicas em execução de algumas tarefas se comparado com o sistema tradicional de processamento local como por exemplo o custo/performance, o atendimento as necessidades de aplicações essencialmente distribuídas, tendem a serem fortemente confiáveis além do crescimento gradual de acordo com a carga de trabalho. Como todo sistema, ele apresenta também alguns pontos que podem ser considerados desvantagens como o desenvolvimento de software muito complexo, possíveis gargalos por dependência de rede de comunicação e falta de segurança intrínseca.

2.1.2 Diferenças básicas entre o sistema distribuído e monoprocessador

O que marca fortemente um sistema monoprocessador é a forma de como ele implementa a comunicação entre os processos por ele gerenciados. Observando o problema do produtor-consumidor, que necessita da existência de um buffer compartilhado no qual um processo escreve e outro processo faz a leitura deste buffer, há a necessidade de compartilhamento. No sistema distribuído não há necessidade de se fazer qualquer tipo de compartilhamento ou se o fizesse deixaria de ser classificado desta forma.

2.1.3 As camadas de um sistema distribuído

Segundo Tanenbaum, 1995, um sistema distribuído é uma “coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente”.

Devido à total ausência de memória compartilhada, toda a comunicação nos sistemas distribuídos é baseada em troca de mensagens.

Sistemas Distribuídos são organizados

por camadas de softwares logicamente

colocadas entre camadas superiores

constituído de usuários e aplicações, e

camada de mais baixo nível: sistema

operacional.

  • Aplicações e Serviços: Aplicações dos usuários e serviços de auto nível
  • Middleware: camada de software que

esconde heterogeneidade e fornece um modelo de programação

.

  • Sistema Operacional: Controla a execução das aplicações dos usuários.
  • Computador e hardware de rede

Os componentes, Sistema Operacional e Computador e hardware de rede, formam juntos o que se convencionou chamar de plataforma, ou seja, estes dois níveis inferiores de software e hardware fornecem serviços aos níveis superiores e são implementados de acordo e em função desta plataforma. Plataformas principais: Intel x86(Windows, Linux, Solares), SPARC/SunOS e PowerPC/MacOS.

2.1.3 Tipos e exemplos de aplicações de sistemas distribuídos

  • Sockets é uma abstração computacional que mapeia diretamente a uma porta de transporte (UDP e TCP) e mais um endereço de rede. Com esse conceito é possível identificar unicamente um aplicativo ou servidor na rede de comunicação IP.

A conexão via sockets se dá através de um serverSocket e um Socket cliente, ou seja, um socket cliente se liga a uma porta numerada de forma que a camada TCP possa identificar a aplicação à qual os dados se destinam. Desta forma o socket é um ponto final de um link de comunicação de mão-dupla entre dois programas através da rede. Exemplo disso é o cliente browser conectando em um servidor de páginas web.

  • Cordeiro e Silva, 2007, afirmam que um SOR – Sistema Operacional de Rede para ser considerado um sistema distribuído ele teria que assumir que o hardware fosse homogêneo, desta forma o autor cita que deveria existir a presença de Middleware entre as camadas de Aplicação e Transporte para fazer essa tradução o que faria o SOR prover suporte para transparência de distribuição.
  • Ferreira, 2003, descreve o RAID – Redundant Array of Independent Disks, Arranjo Redundante de Discos Independentes, como um “… sistema de discos rígidos rápidos e confiável, por meio de discos individuais.” Segundo o autor o RAID pode ser implementado por hardware, na forma de controladores especiais de disco, ou via software, utilizando um módulo do kernel para fazer a tarefa gestão de discos.

2.2 Trabalhos Relacionados

A escolha por desenvolver um sistema distribuído utilizando uma arquitetura multiplataforma, de acordo com Pinto, et al, foi uma comparação detalhada das vantagens e desvantagens, tanto técnicas quanto de valores financeiros para o desenvolvimento do “Quaestor” – sistema de informações financeira da Marinha do Brasil, e que segundo o autor foi a que melhor atendeu os outros requisitos como custo de desenvolvimento, manutenção e operação, necessidades de pessoal e máquinas, segurança das informações, geração de tráfego na rede, desempenho dos aplicativos e disponibilidade.

2.3 Análise Crítica

Dentre as grandes vantagens por optar por um sistema distribuído, a performance foi sem dúvida a principal entre elas, mas observando os trabalhos apresentados em conclusões acadêmicas e leitura técnica, é possível que outro fator esteja tendo grande influência nas decisões de projetos. Este fator é a utilização de navegadores, ou browsers para utilização dos programas e aplicativos o que apresenta facilidades uma vez que não requer treinamento específico para uso da interface apresentada ao usuário final e além das aplicações poderem ser utilizadas de forma local ou via Internet.

CAPÍTULO 3 – CONCLUSÕES

Pode-se observar que, por não haver uma solução pronta, definitiva, como um sistema operacional distribuído, que várias empresas, organizações ou mesmo pessoas, desenvolvem as suas próprias aplicações com as características de sistemas distribuídos, o que permite identificar que existe uma demanda muito grande a ser atendida por novas aplicações a serem desenvolvidas para essa finalidade, independentemente da área de atuação, seja ela para fins de pesquisas biológicas ou aplicações de banco de dados.

Como recomendações à trabalhos futuros, é sugerido que novas pesquisas possam ser feitas no sentido do desenvolvimento de sistemas nativamente distribuídos, ou seja, que todo o seu projeto fosse pensado, desde o início, para essa finalidade.

BIBLIOGRAFIA

CORDEIRO, Gilliard Santos, SILVA, Jefferson Moreira da, 2007 - MIDDLEWARE – Sistemas Distribuídos - Trabalho conclusão de curso da UNIDERP, Campo Grande, MS.

DEITEL, Harvey M. Java Como Programar 6ª edição – São Paulo: Editora Pearson Education do Brasil., 2008

FERREIRA, Rubem E. Linux Guia do Administrador do Sistema. São Paulo: Novatec Editora Ltda, 2003.

PINTO et al., (2005) Uma Experiência de Desenvolvimento de um SistemaDistribuído Utilizando uma Arquitetura Multiplataforma. Trabalho conclusão de curso do Programa de Engenharia de Sistemas e Computação – UFRJ, Rio de Janeiro.

TANENBAUM, Andrew S. Sistemas Operacionais Modernos – Rio de Janeiro: Editora Prentice-Hall do Brasil Ltda, 1995

TANENBAUM, Andrew S. Redes de Computadores – Rio de Janeiro: Elsevier Editora Ltda, 2003


Pesquisa personalizada

Comments are closed.