Buscar

Sistemas Distribuidos_02

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).
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais