Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* ARQUITETURA DE SISTEMAS DISTRIBUIDOS - CCT0042 Prof. Msc. Edward Melo edward_melo@hotmail.com Agosto / 2015 * * OBJETIVOS: Entender o que é um sistema distribuído Conhecer as vantagens e desvantagens da computação distribuída Conhecer os desafios da computação distribuída Conhecer as falácias da computação distribuída Identificar o uso de aplicações distribuídas Conhecer as principais aplicações atuais Entender como a computação distribuída pode contribuir para TI Verde * * Conhecer os métodos de tratamento de falhas em sistemas distribuídos Entender a classificação de Flynn Conhecer as implementações da arquitetura MIMD Aprender as características de desenvolvimento de aplicações para arquiteturas MIMD Entender a motivação para programação paralela Conhecer os modelos de programação paralela OBJETIVOS: * * CONTEÚDO: Características dos SDs Aplicações distribuídas, internet e TI verde Tratamento de Falhas Classificação de Flynn Modelos de programação * * REFERÊNCIA : TANEMBAUM, A. e STEEN, M., “Sistemas Distribuídos: Princípios e Paradigmas”, 2ª edição, Pearson Prentice Hall, 2007. COMER , D. , "Redes de Computadores e internet", 4ª edição, Artmed, 2007. COULOURIS,G., DOLLIMORE, J. e KINDBERG, T., “Sistemas Distribuídos: Conceitos e Projetos”, 4a Edição, Bookman, 2007. * * REFERÊNCIA : * * BIBLIOGRAFIA COMPLEMENTAR : * * MATERIAL DIDÁTICO : - Tanembaum, A. e Steen, M., “Sistemas Distribuídos: Princípios e Paradigmas”, 2ª edição, Pearson Prentice Hall, 2007. Capítulo 1 Introdução 19 p. Capítulo 2 Arquiteturas 22 p. `` - Silberschatz, A. e Galvin, P , “Fundamentos de sistemas operacionais”, 8 ª Edição, LTC, 2010. Cap 16, Sistema de Arquivos distribuídos 12p - Deitel, H.M, "Sistemas Operacionais", 3 ª edição, Pearson Prentice Hall, 2005. Cap 18. Sistemas distribuídos e serviços web 32p. - Comer , D. , "Redes de Computadores e internet", 4ª edição, Artmed, 2007. capítulo 28 - interação cliente-servidor 12 p. capítulo 29 - interface de sockets 13p. capítulo 30 - exemplo de um cliente e de um servidor 12. Capítulo 38 – RPC e Middleware 11p. * * Características dos SDs A definição clássica de Sistemas Distribuídos supõe o uso de um conjunto de computadores independentes que aparecem para seus usuários como um sistema único e coerente (Tanenbaum, 2002). A forma de colaboração entre estes componentes é o cerne do desenvolvimento de aplicações distribuídas * * 1) Concorrência: Na rede a execução concorrente de programas é a norma Dois usuários em maquinas diferentes podem compartilhar o mesmo recurso. Exemplo: páginas web ou arquivos. A manipulação de recursos compartilhados pode ser ampliada pela adição de mais recursos na rede. Exemplo: computadores. Desafios da computação distribuída: * * 2) Inexistência de relógio global Programas coordenam suas ações trocando mensagens. Troca de mensagens exige uma noção do tempo. Existem limites para sincronizar relógios em um rede e não existe uma noção global única do tempo correto. Desafios da computação distribuída: * * 3) Falhas independentes Todo sistema de computador pode falhar. É responsabilidade dos projetistas de sistema pensar nas consequências das possíveis falhas. Nos sistemas distribuídos: - falhas na rede resultam no isolamento dos computadores que estão conectados a ela. - os programas existentes em uma rede talvez não consigam detectar se a rede falhou ou se tornou demasiadamente lenta. Desafios da computação distribuída: * * Aplicações distribuídas, internet e TI verde - Internet: conjunto heterogêneo de rede de computadores - Intranet: parte da internet com limite estabelecido e administrada separadamente - Computação ubíqua: interseção da computação móvel e pervasiva - Computação em Grid: utilização dos recursos de diferentes computadores para solução de problemas de grande complexidade ou volume de dados Aplicações distribuídas: * * Computação ubíqua (ubiquitous computing ou ubicomp) ou computação pervasiva: termo usado para descrever a onipresença da informática no cotidiano das pessoas. Tem como objetivo tornar a interação pessoa-máquina invisível, ou seja, integrar a informática com as ações e comportamentos naturais das pessoas, de uma forma que nem percebam que estão dando comandos a um computador, mas como se tivessem conversando com alguém. Computadores teriam sistemas inteligentes que estariam conectados ou procurando conexão o tempo todo, dessa forma tornando-se onipresente. Computação ubíqua * * O primeiro passo - utilização de interfaces naturais, a forma mais primitiva que temos de interagir com algum ser humano: fala, gestos, presença no ambiente, movimentação dos olhos, deixando dessa forma o teclado e mouse sem utilização. O segundo passo - geração de uma computação sensível a contexto, tecnologia que torna possível que os dispositivos capturarem o contexto automaticamente. A presença de uma pessoa ao espaço ou qualquer tipo de movimento corporal, movimentação dos braços, dedos, cabeça, olhos e até movimentos faciais. Computação ubíqua * * Requer computadores pequenos, baratos e tecnologias de ligação com ou sem fios a computadores de maior dimensão. Exemplo: casa controlada por dispositivos de computação ubíqua deverá ter controle remoto da iluminação da casa, sistema de extinção de incêndios, sistemas de entretenimento integrados, sistemas para monitorizar as saúde dos ocupantes da casa, e um frezer (geladeira) que avise os ocupantes da casa dos produtos estragados ou fora da validade... Computação ubíqua * * Computação em grid (grid computing) é um modelo computacional capaz de alcançar uma alta taxa de processamento dividindo as tarefas entre diversas máquinas, podendo ser em rede local ou rede de longa distância, que formam uma máquina virtual. Esses processos podem ser executados no momento em que as máquinas não estão sendo utilizadas pelo usuário, assim evitando o desperdício de processamento da máquina utilizada. Computação em Grid * * Na base da atual computação em grid (grelha) estão os aglomerados de computadores ou computadores localizados em diferentes centros de cálculo, ligados entre si por uma rede de alto débito, em Rede Privada Virtual (VPN) por questões de segurança. Computação em Grid * * TI verde: Prática sustentável de produção, gerenciamento e descarte dos equipamentos eletrônicos, bem como economia de energia elétrica (consulte em http://info.abril.com.br/ti-verde/). Virtualização: camada de abstração entre sistemas de hardware de computador e o software que roda nestes sistemas proporcionando uma visão lógica dos recursos de computação (economiza recursos e pratica TI verde). Sistemas distribuídos e TI verde : * * Exemplo: Estudo de Caso Estudos feitos com os simuladores da Microsoft, um ambiente formado por 200 servidores virtuais faz a emissão de CO2 na atmosfera cair cerca de 150% quando comparado aos mesmos 200 servidores, cada um executando em um computador com uma fonte própria de alimentação. Sistemas distribuídos e TI verde : * * Tratamento de falhas IDEAL: sistemas computacionais são totalmente confiáveis e 100% disponíveis REAL: confiabilidade e disponibilidade absolutas estão muito longe de serem alcançadas Mundo ideal x Mundo real * * Falhas são inevitáveis: Suas consequências podem ser evitadas!!! Usuários e desenvolvedores devem arcar com o custo do emprego de técnicas de tolerância a falhas Equipamentos e serviços de qualidade Preocupação com falhas (Sistemas robustos) Sistemas críticos: aviões, sondas espaciais e controles industriais de tempo real Popularização de redes: aumento da dependência tecnológica e diversos serviços oferecidos * * Mercado mundial que se preocupa com falhas em sistemas de tempo real e em sistemas de missão crítica Empresas começam a investir em soluções de alta disponibilidade Exemplo: microprocessadores Intel 80x86, desde o i486, incorporam uma gama de recursos para tolerâncias a falhas FATO: Pelo custo e pela carência de cultura de confiabilidade esses recursos não são plenamente aproveitados Mercado * * 1) Desejável ter confiabilidade e disponibilidade 2) Defeitos podem levar a grandes catástrofes - Controle de tráfego terrestre e aéreo - Controle de usinas de geração de energia - Manutenção de dados sigilosos sobre a vida e a finança de cidadãos e empresas - Telecomunicação - Transações comerciais internacionais de todo tipo Em um sistema de computação..... * * O software e os procedimentos de projetos cada vez mais complexos: muitas falhas e não adianta apenas ter um hardware de qualidade Muitos bugs em sistemas demoram a ser descobertos Defeitos * * Na guerra do Golfo em fevereiro de 1991 foram noticiados relatos de falhas em mísseis Em novembro de 1992 houve um colapso no sistema de comunicação do serviço de ambulâncias em Londres Em junho de 1993, durante dois dias, não foi autorizada operações de cartão de crédito em toda a França Várias missões da NASA a Marte terminaram em fracasso total ou parcial Defeitos na literatura investigados, com causas determinadas e sem garantia que algo semelhante possa voltar a ocorrer: * * Como evitar, detectar e contornar bugs no projeto de hardware e software? Como gerenciar a altíssima complexidade dos sistemas atuais de computação (dezenas de chips de milhões de transistores, software de centenas de milhares de linhas de código)? Como explorar paralelismo para aumentar o desempenho sem comprometer a qualidade dos resultados, mesmo no caso de falha de um ou mais componentes do sistema? Desafios atuais * * 4) Como aproveitar novas tecnologias mais rápidas, baratas e eficientes (mas ainda não totalmente provadas e testadas) sem saber ainda seu comportamento em situações inesperadas sob falha ou sobrecarga? 5) Como aproveitar, para aplicações críticas e para operação em tempo real, o modelo de sistemas distribuídos construídos sobre plataformas não confiáveis de redes, contornando os problemas de perdas de mensagens, particionamento de rede e intrusão de hackers? Desafios atuais * * 6) Como desenvolver computadores móveis e sistemas embarcados, garantindo confiabilidade e segurança nesses dispositivos, e assegurando simultaneamente baixo consumo de potência, sem recorrer a técnicas usuais de replicação de componentes que aumentam peso e volume? 7) Finalmente, como conciliar alta confiabilidade e alta disponibilidade com as crescentes demandas por alto desempenho? Desafios atuais * * Sistema embutido (sistema embebido) é um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. - Diferentemente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas pré-definidas, geralmente com requisitos específicos. - Já que o sistema é dedicado as tarefas específicas, através de engenharia, pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto. Sistema Embarcado * * - Em geral, não podem ter sua funcionalidade alterada durante o uso. Caso queira-se modificar o propósito é necessário reprogramar todo o sistema. - São desenvolvidos para tarefas específicas. Por questões como segurança e usabilidade, alguns inclusive possuem restrições para computação em tempo real. - O software escrito é muitas vezes chamado firmware, armazenado em memória ROM ou flash e não em HD. - Por vezes é executado com recursos computacionais limitados: sem teclado, sem tela e com pouca memória. Sistema Embarcado * * - Sistemas embarcados residem em máquinas que, espera-se, possam trabalhar continuamente por anos ininterruptamente, e que possam por vezes recuperarem-se sozinhas após erros. O software é geralmente desenvolvido e testado mais cuidadosamente do que em computadores pessoais. A recuperação de erros pode ser atingida com técnicas como o watchdog timer, que reinicia o sistema a menos que o software notifique periodicamente que está funcionando corretamente. Sistema Embarcado * * - Alguns exemplos de uso desistemas embarcados: MP3 players. Semáforos. Telefones celulares e centrais telefônicas d) Equipamentos de redes de computadores, como roteadores, hubs, switches e firewalls. e) Impressoras. f) Dispositivos de armazenamento (discos rígidose disquetes) g) Controladores da tracção, do motor e do antibloqueio em automóveis: freios ABS e controle de tração. h) Calculadoras. i) Eletrodomésticos, como fornos microondas, máquinas de lavar, aparelhos de TV, DVD players. j) Equipamentos médicos. k) Videogames. l) PDA (palmtop). m) Tratores e implementos agrícolas. n) Urna eletrônica. * * São falhas parciais (alguns componentes falham, enquanto outros continuam funcionando) - tratamento de falhas é particularmente difícil Falhas em Sistemas Distribuídos Conceitos de Falha x Erro x Defeito * * - Causa física ou algorítmica do erro - São inevitáveis - Componentes físicos envelhecem e sofrem com interferências externas - Qnt ao software, os projetos de software e hardware apresentam: Alta complexidade Fragilidade humana Trabalha com grande volume de detalhes ou com deficiências de especificação Falha * * - Interpretação incorreta de uma informação que leva a um defeito no sistema Erro - Definido como um desvio da especificação - Não podem ser tolerados, mas deve ser evitado que o sistema apresente defeito ◦ São evitados quando tratamos falhas Defeito * * - Um chip de memória, que apresenta uma falha do tipo grudado-em-zero (stuck-at-zero) em um de seus bits (falha no universo físico), pode provocar uma interpretação errada da informação armazenada em uma estrutura de dados (erro no universo da informação) e como resultado o sistema pode negar autorização de embarque para todos os passageiros de um vôo (defeito no universo do usuário). - Observar que uma falha não necessariamente leva a um erro (aquela porção da memória pode nunca ser usada) e um erro não necessariamente conduz a um defeito (no exemplo, a informação de vôo lotado poderia eventualmente ser obtida a partir de outros dados redundantes da estrutura). Exemplos * * Natureza: falha de hardware, falha de software, de projeto, de operação, ... Duração ou persistência: permanente ou temporária (intermitente ou transitória) Extensão: local a um módulo, global Valor: determinado ou indeterminado no tempo Definindo um falha * * Problemas de especificação Problemas de implementação Componentes defeituosos Imperfeições de manufatura Fadiga dos componentes físicos Distúrbios externos como radiação Interferência eletromagnética Variações ambientais (temperatura, pressão, umidade) Problemas de operação Causas da falha * * - Falhas físicas: falhas de componentes - Falhas humanas: falhas de projeto e falhas de interação Classificação de falhas Falhas humanas maliciosas Intenção de provocar danos ao sistema Tratadas por técnicas de segurança computacional * * · Detecção de falhas · Mascaramento de falhas · Tolerância a falhas · Recuperação de falhas · Redundância Técnicas de tratamento de falhas : Exemplo em sistemas distribuídos: tratamento de falhas bizantinas * * - Algumas falhas podem ser detectadas Exemplos: Somas de verificação podem ser utilizadas para detectar dados danificados em uma mensagem ou em um arquivo Dois componentes idênticos em um comparador 1) Detecção de falhas * * Algumas falhas detectadas podem ser ocultas ou se tornar menos sérias - Eliminar uma mensagem danificada torna a falha menos séria, pois ela pode ser retransmitida. - Exemplos: mensagens podem ser retransmitidas quando não chegam; dados de arquivos podem ser gravados em dois discos, para que, se um estiver danificado, o outro ainda possa estar correto; 2) Mascaramento de falhas * * - A maioria dos serviços na Internet apresenta falhas: não é prático detectar e mascarar todas - Clientes e usuários podem ser projetados para tolerar falhas - Exemplo: quando um navegador não consegue contatar um servidor web, ele não faz o usuário esperar indefinidamente, ele informa o problema e deixa o usuário livre para tentar novamente 3) Tolerância a falhas * * - Exemplo: computações realizadas por alguns programas ficarão incompletas quando ocorrer uma falha e os dados permanentes que eles atualizam podem não estar em um estado consistente - Projetar software de modo que o estado dos dados permanentes possa ser recuperado ou retrocedido, após a falha de um servidor 4) Recuperação de falhas * * Os serviços podem ser tolerantes a falhas com: Componentes redundantes Programação n-versões Blocos de recuperação 5) Redundância Exemplos: Sempre deve haver pelo menos duas rotas diferentes entre dois roteadores quaisquer na Internet No DomainNameSystem, toda tabela de correspondência de nomes é replicada em pelo menos dois servidores diferentes * * Um banco de dados pode ser replicado em vários servidores, para garantir que os dados permaneçam acessíveis após a falha de qualquer servidor. 5) Redundância Os servidores podem ser projetados de forma a detectar falhas em seus pares; quando uma falha é detectada em um servidor, os clientes são redirecionados para os servidores restantes. * * Classificação de Flynn Definição: classificação de computadores, proposta na década de XX por Flynn, baseada no: fluxo de instrução (“Instruction stream”) fluxo de dados (“Data stream”) * * Classificação de Flynn * * 1) SISD (Single instruction stream/Single data stream) * * Características: É a identificação mais simples O equipamento é considerado sequencial Só é executada uma instrução por vez para cada dado enviado Podem ter várias unidades funcionais mas apenas uma unidade de controle. 1) SISD (Single instruction stream/Single data stream) * * Um único fluxo de instruções atua em um único fluxo de dados, equivalente ao processamento seqüencial implementado na máquina de Von Neumann. Ou seja, são as máquinas Von Neuman tradicionais, sem qualquer paralelismo Exemplos: maquinas monoprocessadas (PC, MAC, Workstation Sun). 1) SISD (Single instruction stream/Single data stream) * * b) Arquitetura Von Neumann: desenvolvida na década de 50 e cerca de 90% dos computadores atuais usam essas características. Pontos básicos 1) SISD (Single instruction stream/Single data stream) 1. Um único controle centralizado (uma só CPU); 2. Uma única memória para dados e instruções; 3. As instruções devem fazer operações elementares sobre os dados. * * 2) SIMD (Single instruction stream/Multiple data) stream) * * Características: É equivalente ao paralelismo de dados. Nessas máquinas há menos hardware, menos memória e um hardware muito mais específico Um único fluxo de instruções atua em vários fluxos de dados, equivalente ao processamento vetorial. Exemplos: Cray, Connection Machine, MasPar. 2) SIMD (Single instruction stream/Multiple data) stream) * * Uma simples instrução é executada paralelamente utilizando vários dados de forma síncrona, em que se executa um único programa ao mesmo tempo. Neste contexto se encaixam: - a tecnologia MMX (MultiMediaeXtension) existente dentro dos processadores atuais - os computadores vetoriais como Cray1, CM-2 2) SIMD (Single instruction stream/Multiple data) stream) * * Comparação entre SISD e SIMD * * 3) MISD (Multiple instruction stream/Single data stream) * * Características: Múltiplas unidades de controle executando operações distintas que atuam em um único dado. Não representa nenhuma implementação disponível e é difícil imaginar uma maquina nestas condições Exemplo: seria criar uma máquina com vários processadores tentando quebrar um código de criptografia (a arquitetura MIMD já faz isto). 3) MISD (Multiple instruction stream/Single data stream) * * 4) MIMD (Multiple instruction stream/Multiple data stream) * * 4) MIMD (Multiple instruction stream/Multiple data stream) * * Características: Múltiplas unidades de controle atuando em fluxos de dados diferentes. Várias unidades de controle comandam suas unidades funcionais. Esta classe foi subdividida em: Sistemas fortemente acoplados Sistemas fracamente acoplados 4) MIMD (Multiple instruction stream/Multiple data stream) * * Refere-se ao modelo de execução paralela na qual cada processador está essencialmente agindo independente. Existem múltiplos fluxos de instruções e múltiplos dados como se fossem um conjunto de máquinas SISD em que cada processador é capaz de executar um programa diferente. Exemplos: servidores com múltiplos processadores, sistemas MPP e os clusters de computadores. 4) MIMD (Multiple instruction stream/Multiple data stream) * * 4.1) Sistemas fortemente acoplados S.O. * * a) Características: - Multiprocessadores - Memória compartilhada - Arquiteturas: UMA, NUMA;COMA - Programação: memória compartilhada b) Vantagem: compartilhamento de dados entre os processos muito mais rápido 4) MIMD (Multiple instruction stream/Multiple data stream) * * c) Desvantagens: - Computadores extremamente caros - Existe uma limitação física para a quantidade de processadores - Necessário técnicas de sincronização para leitura e gravação de dados 4) MIMD (Multiple instruction stream/Multiple data stream) * * 4.1.1) Arquitetura UMA Acesso Uniforme à Memória * * a) Características: - Utilizado em sistemas de pequena dimensão - Desenvolvimento simplificado 4.1.1) Arquitetura UMA Acesso Uniforme à Memória * * 4.1.2) Arquitetura NUMA Acesso Não-Uniforme à Memória * * a) Características: Construída em vários módulos, associando um a cada processador. - O espaço de endereçamento é único. - Tende a ser mais complexo. - Depende exclusivamente da localização dos dados. 4.1.2) Arquitetura NUMA Acesso Não-Uniforme à Memória * * 4.1.3) Arquitetura COMA * * a) Características: - É um tipo de especial de NUMA. - Memórias globais são substituídas por caches. - Necessário um mecanismo de coerência de caches. - Tem um alto preço. 4.1.3) Arquitetura COMA * * 4.2) Sistemas fracamente acoplados * * a) Características: - Multicomputadores - Memória fisicamente distribuída - Tipos: Arquiteturas NORMA e Massivamente paralelas Cluster Programação: troca de mensagens 4.2) Sistemas fracamente acoplados b) Desvantagens: - Programação mais complicada - Paralelismo não é intuitivo - Se exigir muita comunicação = custo com envio de mensagens * * Cada processador só acessa diretamente sua memória local; Modelo tradicional de programação: troca de mensagens; - Frequentemente utilizadas para interligar um grande número de computadores; - Os processadores são conectados por uma rede de interconexão de alta velocidade; - Projeto simples e relativamente barato; - Alto custo de sincronização e comunicação entre processadores; - Alto potencial de escalabilidade. Arquitetura NORMA (NO Remote Memory Access) * * Figura - Arquitetura NORMA - Exemplos: máquinas paralelas (clusters) e redes de computadores. Arquitetura NORMA (NO Remote Memory Access) * * Clusters Um cluster, ou aglomerado de computadores, é formado por um conjunto de computadores, que utiliza um tipo especial de sistema operacional classificado como sistema distribuído. Muitas vezes é construído a partir de computadores convencionais (personal computers), os quais são ligados em rede e comunicam-se através do sistema, trabalhando como se fossem uma única máquina de grande porte. * * Tipos de Clusters Existem vários tipos de cluster, no entanto há alguns que são mais conhecidos, como: a) Cluster de alto desempenho (alta performace): permite que ocorra uma grande carga de processamento com um volume alto de giga flops (Floating point Operations Per Second - operações de ponto flutuante por segundo, usado para determinar o desempenho de um computador) em computadores comuns e utilizando sistema operacional gratuito, o que diminui seu custo. * * b) Cluster de alta disponibilidade: são clusters os quais seus sistemas conseguem permanecer ativos por um longo período de tempo e em plena condição de uso; sendo assim, podemos dizer que eles nunca param seu funcionamento; além disso, conseguem detectar erros se protegendo de possíveis falhas. Para um cluster de alta disponibilidade que está sendo monitorado por um analista, a disponibilidade (%) desse cluster é de, aproximadamente: Disponibilidade (%) = MTBF / (MTBF + MTTR), onde: - MTBF (Mean Time Between Failures): tempo entre duas falhas consecutivas. - MTTR (Mean Time To Repair): tempo necessário para recuperar a falha. Tipos de Clusters c) Cluster para balanceamento de carga: esse tipo de cluster tem como função controlar a distribuição equilibrada do processamento. Requer um monitoramento constante na sua comunicação e em seus mecanismos de redundância, pois se ocorrer alguma falha, haverá uma interrupção no seu funcionamento. * * Arquiteturas Massivamente paralelas - Arquitetura NORMA com mais de 1000 processadores; - Escalabilidade: o aumento no número de processadores deve ser inversamente proporcional ao tempo de execução do algoritmo; - Arquitetura complexa: escalabilidade da arquitetura deve ser complementada pela escalabilidade do software básico (sistema operacional) e da aplicação. - Exemplo: Supernode a) Rede de interconexão reconfigurável: as ligações físicas entre os nodos se alteram dinamicamente; b) Potencial para conexão de um número praticamente infinito de processadores; c) Projeto extremamente complexo. * * Modelos de programação Composta por um conjunto de instruções que são executadas sequencialmente. Obviamente, esta sequencia obedece a uma lógica de programação. 1) Programação seqüencial * * Exemplos anteriorres em linguagem C: C * * Permite execução concorrente de tarefas dentro de um mesmo processo ou entre processos que compartilham recursos. Sua execução pode ser realizada antes ou após a execução de outros componentes do programa. - O programa geralmente não possui controle sobre a ordem e o tempo de execução das unidades concorrentes 2) Programação concorrente * * A execução de unidades concorrentes admite as seguintes possibilidades: a) Pseudo-paralela: execução em um único processador; b) Paralela: execução em vários processadores que compartilham uma memória; c) Distribuída: execução em vários processadores independentes, sem compartilhamento de memória. 2) Programação concorrente * * Fluxo de execução seqüencial e concorrente * * Fluxo de execução seqüencial e concorrente * * Exemplo: o que são threads (em Java) ? - Definição básica: fluxo de controle seqüencial isolado dentro de um programa. - Programas multithreaded: múltiplos threads concorrentes de execução num único programa, realizando várias tarefas “ao mesmo” tempo. Diferentes threads podem executar em diferentes processadores, se disponíveis, ou compartilhar um processador único. Diferentes threads no mesmo programa compartilham um ambiente global (memória, processador, registradores, etc.). * * Vários servidores atendendo a vários clientes simultaneamente no tempo Pressupõe a existência de mais de uma CPU pois é destinada a execução simultânea de tarefas de um mesmo processo. 3) Programação paralela Motivação para computação distribuída: Existem 3 formas de executar uma tarefa de forma mais rápida: · Trabalhar mais rápido -> aumentar velocidade da CPU · Trabalhar de forma otimizada -> melhorar o algoritmo · Trabalhar com colaboração -> computação paralela ou distribuída * * - Ausência de memória global. - Ausência de clock global. - Imprevisibilidade no retardo de mensagens. Dificuldades para computação distribuída: * * - Interação da aplicação e do usuário com o ambiente distribuído em níveis diferentes. - Suporte a plataformas heterogêneas através de uma camada de software entre o kernel e a aplicação denominada middleware. Aspectos técnicos da computação distribuída: - Problemas: custo e falta de produtos de software adequados. - Programação paralela utilizando bibliotecas de troca de mensagem (MPI, PVM) ou invés de bibliotecas baseadas em memória compartilhada (ex:Pthreads). * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Compartilhar