Sistemas Distribuídos: Conceitos e Arquiteturas
Classificado em Computação
Escrito em  em  português com um tamanho de 9,42 KB
português com um tamanho de 9,42 KB
Definições de Sistemas Distribuídos
"Consiste de uma coleção de computadores autônomos ligados através de uma rede e equipados com software de sistemas distribuídos" (Coulouris).
"Um sistema distribuído é uma coleção de computadores independentes que aparecem para os usuários do sistema como um único computador" (Tanenbaum).
- Software de distribuição: Habilita os computadores a coordenar suas atividades e compartilhar recursos do sistema (hardware, software e dados).
- Os usuários de um sistema distribuído devem perceber como uma facilidade de computação única, integrada, mesmo que seja implementada por vários computadores.
- Hardware: Máquinas autônomas.
- Software: Os usuários pensam no sistema como um único computador.
Evolução dos Sistemas Distribuídos
- O desenvolvimento de sistemas distribuídos iniciou em 1970, seguindo o progresso das redes de computadores de alta velocidade.
- Esse crescimento tem sido alcançado devido ao desenvolvimento de software para sistemas distribuídos destinados a suportar o desenvolvimento de aplicações distribuídas.
Fatores que contribuem para a evolução dos Sistemas Distribuídos
- Baixo custo dos microprocessadores.
- Interconexão e abrangência das redes.
- Aplicações multimídia em expansão.
Aplicações Distribuídas
- Aplicações de conferência e acesso a informações multimídia.
- Aplicações que empreguem representação digital de imagens, áudio, vídeo que suportem usuários realizando ações de ensino a distância, trabalhos ou projetos cooperativos, videoconferências, transações comerciais, dentre outras atividades.
- Muitas aplicações multimídia executam sobre um sistema distribuído, habilitando muitos usuários a interagirem entre si e compartilhar recursos.
- Requisitos especiais a serem considerados em projetos deste tipo:- Vídeo e áudio são mídias contínuas.
- Aplicações interativas devem apresentar um delay entre o início da conversação em um site e a sua reprodução no outro inferior a 100 ms, pois, caso contrário, o atraso torna-se perceptível.
 
Multiprocessadores e Multicomputadores
- Multiprocessadores: Caracterizam-se pelo uso de dois ou mais processadores no mesmo sistema.
- Multicomputadores: Caracterizam-se pela ligação e intercalação de dois ou mais computadores (geralmente dispostos em Cluster/Grid).
- Independentemente de onde esteja sendo implementado, o objetivo é realizar processamento paralelo.
Paralelismo
O processamento paralelo pode ser definido como “uma forma eficiente do processamento de informação com ênfase na exploração de eventos concorrentes no processo computacional” (HWANG, 1984).
Tipos de Paralelismo
- Paralelismo Temporal: É feito por operações sobrepostas, onde os eventos ocorrem em instantes de tempos sobrepostos.- Pipeline: Onde a tarefa é subdividida numa sequência de subtarefas, cada uma executada por um estágio de hardware específico (E1), que trabalha concorrentemente com outros estágios do Pipeline (E2 ... En), criando o que tecnicamente é chamado de Paralelismo Temporal na execução das subtarefas.
 
- Paralelismo Espacial Síncrono: Onde os eventos são simultâneos, pois ocorrem em múltiplos recursos no mesmo instante de tempo. Nesta arquitetura, uma unidade de controle distribui para vários elementos de processamento (EP) a mesma instrução, que será executada em paralelo por estes EPs sobre seus dados no mesmo instante de tempo. O processador matricial, Array Processor, encontrado em arquitetura SIMD, executa tal processo.
- Paralelismo Espacial Assíncrono: Onde os eventos não são simultâneos. Neste caso, diversos processadores trabalham em paralelo processando suas tarefas concorrentemente de forma assíncrona para certo intervalo de tempo. Esse tipo de concorrência é encontrada em multiprocessadores de arquitetura MIMD.
Motivação para o Estudo de Sistemas Distribuídos
- O uso de sistemas de informação e redes de comunicação torna-se cada vez mais importante.
- Com o aumento da complexidade dos sistemas em geral, os sistemas distribuídos passam a ser cruciais nas infraestruturas de informação de hoje e do futuro.
Vantagens do uso de SDs
Comparando com os sistemas centralizados
- Apresentam economia, já que microprocessadores oferecem melhor relação preço/desempenho do que os antigos mainframes.
- Velocidade: Maior poder total da computação do que o mainframe.
- Distribuição inerente: Máquinas espacialmente separadas.
- Confiabilidade: Se uma máquina falha, o sistema como um todo pode ainda sobreviver.
- Crescimento incremental: Poder computacional adicionado em incrementos.
Comparando com os sistemas isolados
- Compartilhamento de dados.
- Compartilhamento de dispositivos.
- Comunicação: E-mail, por exemplo.
- Flexibilidade: Distribuição de carga e adaptabilidade.
Desvantagens do uso de SDs
- Pouco software disponível.
- A rede pode causar problemas de comunicação.
- Segurança: Vários pontos de acesso.
Arquiteturas não paralelas
- RISC - Reduced Instruction Set Computer: Caracteriza-se por executar instruções simplificadas (não exige um poder computacional muito alto) em curto período de tempo.
- CISC - Complex Instruction Set Computer: Caracteriza-se por executar instruções complexas (exige alto poder computacional) em um período de tempo, ao menos, 10-13 maior que o tempo gasto na arquitetura RISC.
Arquiteturas paralelas
- SISD - Single Instruction stream Single Data stream: Possui uma unidade de processamento e uma unidade de controle.
- SIMD - Single Instruction stream Multiple Data stream: Caracteriza-se por uma arquitetura vetorial onde a mesma operação é executada sobre múltiplos operandos.
- MISD - Multiple Instruction stream Single Data stream: Caracteriza-se por executar um Pipeline em processadores cujos dados vão sendo processados e passados para outros processadores.
- MIMD - Multiple Instruction stream Multiple Data stream: Várias instruções podem ser executadas ao mesmo tempo em unidades diferentes controladas por unidades de controle independentes.
Tolerância a Falhas em SDs
Modelos de Tempo
Modelos síncrono e assíncrono podem ser considerados extremos teóricos. Outros modelos misturam características desses extremos.
Sistema Assíncrono
- Não existe limite de tempo.
- Impossível alcançar consenso em sistemas assíncronos.
Sistema Síncrono
- Existe um limite de tempo finito e conhecido.
- Falha de componentes pode ser deduzida pela ausência de resposta.
- Timeout - Detecção de defeitos em nodos e perda de mensagens.
Exemplos de Falhas
- Processador (Cache).
- Rede de comunicação (todos os tipos).
- Clock (temporização).
- Meio de armazenamento (temporização, omissão ou resposta).
- Software (resposta).
O modelo de falhas é uma simplificação da realidade.
Modelo Lógico
- Aplicação distribuída.
- Conjunto de processos concorrentes.
- Processos cooperativos.
- Cada processo é sequencial.
- Cada processo pode estar em um nó diferente.
- Progresso Finito.
- Rede completamente conectada.
- Topologia não é considerada.
- Processos.
- Canais.
Middleware
É uma camada de software de distribuição que abstrai a complexidade e a heterogeneidade do ambiente distribuído sobre uma rede com diversas tecnologias, arquiteturas de máquinas, sistemas operacionais e linguagens de programação.
Possui o objetivo de projetar, programar e gerenciar aplicações distribuídas através do provimento de um simples, consistente e integrado ambiente para programação distribuída.
Diferentes plataformas de middleware suportam diferentes modelos de programação para objetos distribuídos.
Middleware Baseado em Objetos
- Um dos mais populares modelos de middleware.
- Ambiente de programação.
- Distribuição + orientação a objetos.
- Utilização de IDL´s.
- Serviços.
- A comunicação poderá ser síncrona ou assíncrona.
- Assume a utilização de um transporte confiável: Protocolo TCP.
Transmissão de Dados
- Dados em programas são estruturados, enquanto que mensagens carregam informação sequencial.
- Necessidade de linearização/restauração de dados.
- Heterogeneidade na representação de dados em computadores:- Uso de um formato externo comum.
 
