Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Distribuídos e Programação Paralela Prof. Me. Gustavo de Souza Neves Introdução ❑De forma geral, a computação tem uma relação muito forte com o avanço tecnológico. ❑Com a modernização da computação, cria-se novas maneira e novos conceitos de processar a informação. Busca do aperfeiçoamento. ❑A indústria computacional avançou, há duas décadas os sistemas computacionais eram centralizados (mainframes) – onerosos e fisicamente grande. Por falta de interconexão entre eles, operavam separadamente Introdução ❑Este cenário mudou com o avanço tecnológico da interconexão e de microprocessadores, compatíveis com mainframes, a custo mais acessível. ❑As redes de computadores se tornaram mais confiáveis e permitiram uma aumento na taxa de transmissão de dados. ❑Esta combinação de fatores levou o desenvolvimento de uma nova forma de organização dos sistemas computacionais. Introdução ❑Interconexão, via rede, de vários computadores, não necessariamente homogêneos ❑Geralmente denominados de sistemas distribuídos (SD). ❑Exemplo de um sistema distribuído é a Internet ❑Os programas em execução nos computadores conectados a internet interagem enviando mensagens através de um meio de comunicação comum. Exemplo de um Sistema Distribuído Conceitos ❑Várias definições de Sistemas Distribuídos são apresentadas pelas literaturas. Nenhuma delas são totalmente satisfatória. ❑Maioria delas, as vezes, são discordante entre si. ❑Para Lamport, sistema distribuído é aquele que impede você de obter qualquer serviço quando falha uma máquina que você nem imagina que exista. ❑Segundo Tanenbaum (1995), um Sistema Distribuído é uma coleção de computadores independentes que aparecem para os usuários do sistema como um único computador. Conceitos ❑Segundo Enslow, num sistema distribuído deve haver: ▪ Multiplicidade de recursos de uso geral (físicos e lógicos), cuja concessão a tarefas específicas deve ocorrer de forma dinâmica; ▪ Distribuição física desses recursos, interagindo através de uma rede de comunicação; ▪ Existência de um sistema operacional de alto nível para unificar e integrar o controle dos componentes distribuídos; ▪ Transparência do sistema, permitindo que os serviços sejam requisitados somente por nome; ▪ Autonomia cooperativa para estabelecimento de conexões e troca de informações. Conceitos ❑Para Mullender & Schroeder os sistemas possuem alguns sintomas para identificação de um sistema distribuído: ▪Múltiplos elementos de processamento; ▪ Existência de hardware de interconexão; ▪ As falhas dos elementos de processamento podem ocorrer de forma independentemente; ▪ Autonomia cooperativa. Conceitos ❑Para Coulouris G. (2007), um sistema distribuído é caracterizado pelo uma rede de computadores que se comunicam através de mensagens e coordenam suas ações. ❑Qual o melhor conceito? ❑O conceito de transparência, ou seja, múltiplos processadores invisíveis ao usuário é de fato uma caracterização dos sistemas distribuídos. ❑ No contexto, pode-se definir os sistemas distribuídos como sendo um grupo de computadores com processamento autônomo, interconectados por uma rede, transparente ao usuário. Vantagens x Desvantagens ❑A utilização dos sistemas distribuídos apresenta algumas vantagens em relação aos sistemas centralizados: ▪ Extensibilidade: possibilidade de crescimento gradativo, com a instalação de novos software e hardware, sem prejuízos ao desempenho. Maior facilidade na manutenção de software e ou hardware. ▪ Compartilhamento de recursos: permite o compartilhamento de recursos físicos e lógicos de alto custo, tornando-o com baixo custo. Ex.: servidores de arquivos, banco de dados, impressoras, correio eletrônico, etc. ▪ Replicação: diversas cópias de um mesmo arquivo armazenadas em locais distintos aumentando a confiabilidade. Vantagens x Desvantagens ▪Disponibilidade: a replicação, tanto de hardware quanto de software, aumenta a disponibilidade do sistema, pois a falha de um elemento não interrompe a operação do sistema global. ▪Mobilidade dos usuários: os usuários ficam livres para acessar o sistema de diversos pontos. Vantagens x Desvantagens ❑Os sistemas distribuídos também apresentam algumas desvantagens, entre elas, podem ser destacadas: ▪ Desempenho / Confiabilidade: o desempenho e a confiabilidade está relacionado a rede utilizada. A rede pode tornar-se o gargalo, principalmente se existirem servidores sobrecarregados de serviços. ▪ Complexidade: elementos individuais são mais simples, mas com a utilização de um conjunto de componentes cria-se uma complexidade razoavelmente grande, tanto para implementação do software e do hardware. Taxonomia para os Sist. Distribuídos ❑Mesmo considerando que todos os sistemas distribuídos são constituídos de vários processadores, existem diversas formas de se organizar o hardware de tais sistemas, especialmente de como implementar a conexão de seus componentes, e de como eles se comunicam. ❑Há diversos sistemas de classificação para computadores com vários processadores, a taxonomia de Flynn é mais citada. ❑A classificação de Flynn divide as arquiteturas em quatro categorias de máquinas, conforme a quantidade de fluxo de instruções e de dados. ❑Fluxo de instruções é uma sequencia de execuções das instruções realizadas pelo processador sobre o fluxo de dados. Taxonomia para os Sist. Distribuídos ❑As categorias são: ▪ SISD (Single Instruction Single Data Stream): possui apenas um fluxo de instruções e um fluxo de dados, independente da capacidade do computador. ▪ SIMD (Single Instruction Multiple Data Stream): único fluxo de instrução sobre vários fluxos de dados. Vários processadores controlados por uma única unidade de controle, executando simultaneamente a mesma instrução em diversos conjuntos de dados. Arquiteturas SIMD são utilizadas, por exemplo, para manipulação de matrizes e processamento de imagens (processamento vetorial). Taxonomia para os Sist. Distribuídos ❑As categorias são: ▪ MISD (Multiple Instruction Single Data Stream): múltiplos fluxos de instruções para um único fluxo de dados. Envolve múltiplos processadores executando diferentes instruções em um único conjunto de dados. apenas um esquema teórico. ▪ MIMD (Multiple Instruction Multiple Data Stream): composta por múltiplos fluxos de instruções e múltiplos fluxos de dados. Envolve múltiplos processadores executando diferentes instruções em diferentes conjuntos de dados, de maneira independente. Taxonomia para os Sist. Distribuídos ❑Todos os sistemas distribuídos são MIMD, portanto o esquema de Flynn não nos interessa no todo, somente esta categoria. ❑Segundo Tanenbaum as máquinas MIMD podem ser divididas em dois grupos (Figura 1.1): Taxonomia para os Sist. Distribuídos ❑Multiprocessadores (Memória Compartilhada): existe um único espaço de endereçamento virtual (memória) que é compartilhado por todos os processadores. Se qualquer dos processadores escrever, por exemplo, o valor 5 no endereço 4.000, qualquer outro processador que venha a ler posteriormente o conteúdo de seu endereço 4.000 obterá o valor 5. ❑Multicomputadores (Memória Distribuída): cada máquina tem seu próprio espaço de endereçamento (memória). Se um processador escreve o valor 5 no endereço 4.000, quando outro processador vier a ler o endereço 4.000, encontrará algo diferente de 5, e não o valor que o outro processador escreveu no seu próprio endereço 4.000. A escrita do valor 5 não afeta de maneira nenhuma a sua memória. Exemplo: um conjunto de computadores pessoais interconectados através de uma rede local. Taxonomia para os Sist. Distribuídos ❑Multiprocessadores (Memória Compartilhada): existe um único espaço de endereçamento virtual (memória) que é compartilhado por todos os processadores. Se qualquer dos processadores escrever, por exemplo, o valor 5 no endereço 4.000, qualquer outro processador que venha a ler posteriormente o conteúdo de seu endereço 4.000 obterá o valor 5. ❑Multicomputadores (Memória Distribuída): cadamáquina tem seu próprio espaço de endereçamento (memória). Se um processador escreve o valor 5 no endereço 4.000, quando outro processador vier a ler o endereço 4.000, encontrará algo diferente de 5, e não o valor que o outro processador escreveu no seu próprio endereço 4.000. A escrita do valor 5 não afeta de maneira nenhuma a sua memória. Exemplo: um conjunto de computadores pessoais interconectados através de uma rede local. Taxonomia para os Sist. Distribuídos ❑ Os Sistemas com Múltiplos Processadores Caracterizam-se por possuir duas ou mais CPU’s interligadas e trabalhando em conjunto. A vantagem deste sistema é permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um processador Taxonomia para os Sist. Distribuídos ❑Segundo Machado e Maia (2002), as principais características desses sistemas são: ❑Escalabilidade: é a capacidade de ampliar o sistema apenas adicionando novos processadores. Ambientes com processadores únicos, em casos de falhas, seria necessário substituir todo o sistema. ❑Disponibilidade: mantem sistema em operação mesmo em casos de falhas. Em caso de um processador falhar, os demais podem assumem suas funções, imperceptível ao aos usuários e suas aplicações. ❑Balanceamento de carga: Distribuição do processamento entre os diversos processadores da configuração a partir da carga de trabalho de cada processador, melhorando, assim, o desempenho do sistema como um todo. Características de Projeto dos Sistemas Distribuídos Transparência: ❑A transparência pode-se obter em diversos níveis: ❑A maneira mais simples é esconder dos usuários o fato de estarem tratando com um sistema distribuído. ❑É possível fazer com que o sistema pareça transparente para os programas. Pode-se projetar a interface das chamadas do sistema de forma a tornar invisível a existência dos vários processadores. No entanto, “tampar” os olhos do programador é muito mais difícil do que fazê-lo com os usuários. Características de Projeto dos Sistemas Distribuídos Transparência: ❑O conceito de transparência pode ser aplicado a vários aspectos dos sistemas distribuídos: ❑Transparência à localização: um sistema verdadeiramente distribuído, seus usuários não devem saber dizer onde estão localizados os recursos tanto de hardware quanto de software (processadores, impressoras, arquivos e base de dados). O nome do recurso não pode ser codificado de forma a revelar a sua localização, de maneira que nomes do tipo maquina1:programa.c o ou /maquina1/programa.c não são aceitáveis. Características de Projeto dos Sistemas Distribuídos Transparência: ❑ Transparência à migração na medida em que tais recursos possam ser movimentados de um lugar para outro sem que haja necessidade de se alterar seus nomes. ❑ Transparência à replicação: o sistema operacional poderá fazer cópias adicionais de arquivos e outros recursos, sem que seja necessário comunicar aos usuários. ❑Transparência à concorrência: bloqueando automaticamente os recursos, quando dois ou mais usuários tentarem acesso a este recurso. Os usuários nem vão notar a existência de outros usuários. Características de Projeto dos Sistemas Distribuídos Transparência: ❑ Transparência ao paralelismo: o compilador, o sistema operacional, e o ambiente de execução devem ser capazes de, em conjunto, mostrar como se pode tirar vantagem do paralelismo potencial sem que o programador nem mesmo tome conhecimento de sua existência. Características de Projeto dos Sistemas Distribuídos Flexibilidade: ❑Existem duas linhas quanto à flexibilidade da estrutura dos sistemas distribuídos: ❑Kernel Monolítico: kernel tradicional que fornece a maioria dos serviços. É um sistema operacional centralizado que foi ampliado com facilidades de rede e integração de servidores remotos. A única vantagem do sistema com kernel monolítico é a sua performance. É mais rápido mandar uma mensagem para o kernel, que executa todo o serviço necessário, do que mandar a mensagem para servidores remotos. Características de Projeto dos Sistemas Distribuídos Flexibilidade: ❑MicroKernel: o kernel deve fornecer apenas os serviços básicos. A maioria dos Sistemas Distribuídos que são projetados desde o início usa esse método. O microkernel é mais flexível e fornece basicamente quatro serviços: • Mecanismo de comunicação entre processos. • Funções para gerência de memória. • Funções para gerência de processos e de escalonamento. • Funções de entrada/saída de baixo nível. Características de Projeto dos Sistemas Distribuídos Flexibilidade: As principais vantagens do microkernel sobre o kernel monolítico são: • Existência de uma interface bem definida. • Fácil de implementar, instalar e acrescentar novos serviços. • Os usuários que não estiverem satisfeitos com os serviços poderão implementar seus próprios serviços. • Pode-se ter um sistema distribuído com vários servidores de arquivos (Unix, MSDOS). Características de Projeto dos Sistemas Distribuídos Confiabilidade: • Um dos objetivos originais 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 idéia básica por trás disso é o fato de que se algumas máquinas do sistema saírem do ar por algum motivo, as demais continuarão funcionando e atendendo as necessidades do sistema. • Na teoria os servidores funcionariam de forma independente, podendo ocorrer falhas. Mas na prática é necessário que um conjunto de servidores esteja funcionando para que o sistema funcione como um todo. Características de Projeto dos Sistemas Distribuídos Confiabilidade: É importante que possamos distinguir alguns aspectos da confiabilidade em sistemas distribuídos: o Disponibilidade do Sistema: refere-se à fração do tempo em que o sistema pode ser utilizado plenamente. A disponibilidade pode ser melhorada através de um projeto que não requer o funcionamento simultâneo de um grande número de componentes críticos. A redundância de software e hardware é uma ferramenta para melhorar a disponibilidade. o Segurança: arquivos e demais recursos devem ser protegidos contra uso não autorizado. o Tolerância a Falhas: mesmo com a falha de um elemento o sistema deve continuar funcionando. Características de Projeto dos Sistemas Distribuídos Performance: • A construção de um sistema distribuído transparente, flexível e confiável não vai ter nenhuma serventia, se ele for lento. Uma aplicação rodando em um Sistema Distribuído não pode comportar-se de maneira pior do que se rodasse em um único processador. • Algumas métricas podem ser usadas para a performance, entre elas destacam-se: • Tempo de Resposta. • Throughput: número de tarefas por hora. • Benchmark. O problema da performance é muito influenciado pela comunicação. A Tolerância a Falhas também tem seu preço, aumentando a quantidade de informações na rede. Características de Projeto dos Sistemas Distribuídos Escalabilidade: • Um sistema distribuído deve permitir a expansão em termos do número de usuários e recursos mantendo a performance relativa de atendimento a serviços do usuário. A maioria dos sistemas distribuídos atuais é projetada para trabalhar com poucas centenas de processadores. Características de Projeto dos Sistemas Distribuídos Conceitos de Software: • Todos os avanços de hardware apresentados anteriormente exercem uma forte influência na evolução do software de sistemas (principalmente sistemas operacionais). Inicialmente os projetistas tratavam a estrutura lógica e os detalhes de máquina. Devido à complexidade, principalmente pela evolução do hardware, o sistema operacional passou a ser estruturado em camadas: módulo básico e módulos superiores. Características de Projeto dos Sistemas Distribuídos É o software, mais especificamente o Sistema Operacional, que deve projetar a imagem do sistema como um todo para seususuários. Os Sistemas Operacionais não podem ser classificados de forma límpida e cristalina como o hardware. Mas é possível distinguir dois tipos de sistemas operacionais com vários processadores: os sistemas operacionais fracamente acoplados e os fortemente acoplado Características de Projeto dos Sistemas Distribuídos ▪ Software Fracamente Acoplado: a fraca conexão do software permite que as máquinas e usuários sejam independentes uns dos outros. Exemplo: grupo de computadores pessoais ligados a uma rede local, cada um com seu próprio processador, memória, disco. Mas compartilhando alguns recursos, como: impressora a laser ou uma base de dados. ▪ Software Fortemente Acoplado: um sistema dedicado a rodar um único programa em paralelo. Exemplo de um jogo de xadrez: a cada processador é atribuída à análise de uma jogada e ao final da análise, as informações são passadas de volta, e uma nova jogada é analisada. O software para esse sistema, tanto de aplicação quanto o Sistema Operacional é muito mais fortemente acoplado que o anterior. Características de Projeto dos Sistemas Distribuídos ❑Considerações Finais: Os sistemas complexos, abrangendo multiprocessadores, redes de computadores e sistemas distribuídos, possuem características de hardware e software bem definidas: 1. Sistema Multiprocessador: • formado por múltiplas CPU’s; • interligados através de uma memória compartilhada; • apresenta um sistema operacional integrado que gerencia os recursos do sistema como um todo. Características de Projeto dos Sistemas Distribuídos 2. Rede de Computadores: • Formada por múltiplos computadores autônomos; • interligados através de um subsistema de comunicação, que pode envolver canais de comunicação; • a rede apresenta um sistema operacional que implementa a infra-estrutura necessária para a comunicação entre os vários computadores; • respeitando e mantendo o sistema operacional de cada um. 3. Sistemas Distribuídos: • possui um hardware formado por uma rede de computadores; • apresenta um sistema operacional que gerencia os recursos do sistema como um todo. Características de Projeto dos Sistemas Distribuídos Tanto os sistemas distribuídos quanto os multiprocessadores apresentam-se ao usuário como um sistema único. A rede de computadores deixa transparecer ao usuário a existência explícita de seus diversos computadores e recursos existentes.
Compartilhar