• Nenhum resultado encontrado

4/3/16. Informações gerais. Carga horária semestral total: 60 horas Horário: Processamento Paralelo e Distribuído. Introdução

N/A
N/A
Protected

Academic year: 2021

Share "4/3/16. Informações gerais. Carga horária semestral total: 60 horas Horário: Processamento Paralelo e Distribuído. Introdução"

Copied!
6
0
0

Texto

(1)

Processamento Paralelo

e Distribuído

Introdução

Prof. João Paulo A. Almeida

(jpalmeida@inf.ufes.br) 2016/01

Informações gerais

•  Página web:

http://nemo.inf.ufes.br/jpalmeida/ensino

•  Carga horária semestral total: 60 horas

•  Horário:

–  terças 13:00-15:00 –  sextas 16:00-18:00

•  Local, atenção:

–  CT-9 sala 207 (terças) –  CT-9 sala 204 (sextas)

Avaliação

•  Duas provas parciais e trabalhos •  A média parcial (MP) é calculada por:

MP = 0,6*P + 0,4*T onde:

P é a média aritmética das provas parciais e T é a média aritmética das notas dos trabalhos. •  A média final (MF) será:

MF = MP, se MP ≥ 7,0 (e houver presença) MF = (PF + MP)/2, se MP < 7,0

(PF é a nota da prova final) •  Se MF ≥ 5,0 -> Aprovado •  Se MF < 5,0 -> Reprovado

Material didático

•  COULOURIS, George F.; DOLLIMORE, Jean; KINDBERG, Tim. Sistemas distribuídos: conceitos e projeto. 4. ed. Porto Alegre: Bookman, 2007.

•  Distributed Systems: Concepts and Design, 4. ed. Addison Wesley, 2005.

–  Existe uma 5ª edição em inglês •  Pelo menos os capítulos:

–  1, 2, 4, 5, 9, 19, 20 •  5ª Edição, capítulo 6

Material didático

•  Capítulo 3, seções 3.1 e 3.2 de "Introduction to Parallel Computing" (2nd Edition) de Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta, Addison Wesley, 2003.

•  Artigos e tutoriais online:

–  P.A. Bernstein. Middleware. Communications of the ACM, Vol. 39, No. 2, February 1996, 86-98.

–  P. Eugster, P. Felber, R. Gerraoui, A.M. Kermarrec, The Many Faces of Publish/Subscribe, ACM Computing Surveys, Vol. 35, No. 2, June 2003, pp. 114–131.

–  Tutorial Java RMI:

• http://java.sun.com/docs/books/tutorial/rmi/index.html –  Tutorial JMS:

• http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMS.html#wp84181

–  Outros tutoriais

Objetivo

•  Apresentar os conceitos básicos e aplicações da computação distribuída e paralela, com uma abordagem prática que inclui o uso de plataformas middleware para a construção de aplicações distribuídas.

(2)

Tópicos a serem abordados (1/2)

•  Introdução

–  Conceituação: distribuição e paralelismo (em diferentes níveis)

–  Exemplos de aplicação

–  Aspectos: concorrência, escalabilidade, falhas independentes, segurança, heterogeneidade, etc. •  Histórico

•  Sistemas distribuídos com TCP/IP •  Remote Procedure Call (RPC) •  RESTful Web Services (HTTP) •  Objetos distribuídos

–  exemplo: Java Remove Method Invocation (RMI) •  Middleware orientado a mensagens

(Message-Oriented Middleware, publish/subscribe) –  exemplos: Java Messaging Service (JMS)

Tópicos a serem abordados (2/2)

•  Padrões de projeto (design patterns) para sistemas distribuídos

•  Conceitos de sistemas paralelos: speed-up (aceleração), eficiência, grau de concorrência, granularidade de tarefas, interação entre tarefas, overhead de comunicação

•  Princípios de projeto de sistemas paralelos: técnicas de decomposição de problemas (decomposição de dados, decomposição recursiva, decomposição exploratória, decomposição especulativa) •  Análise de desempenho com cluster de

computadores •  Aplicações •  Conceitos avançados: –  tolerança a falhas, –  balanceamento de carga

Abordagem

•  Prática

–  Aprender fazendo: vamos construir aplicações distribuídas e testá-las

–  Trabalhos são muito importantes

–  Requer estudo das tecnologias fora da sala de aula: na computação distribuída é difícil fugir de uma sopa de letras: TCP, HTTP, RMI, JMS, REST, XML, JSON, ...

Introdução

•  O que é um sistema distribuído? •  O que é paralelismo?

•  Quais são as vantagens e desvantagens (ou desafios) da computação distribuída/paralela? •  Perspectiva para o curso

O que é um sistema distribuído?

Rede B

Rede C Rede A

Fonte: Luís Ferreira Pires, Universidade de Twente

O que é um sistema distribuído?

Rede B

Rede C Rede A

(3)

Distribuição é um fato, parte do problema

•  Usuários e recursos estão fisicamente distribuídos

•  Temos que lidar com a distribuição •  Exemplos:

–  Páginas na Internet –  Usuários de e-mail

Distribuição é parte da solução

•  Podemos explorar distribuição

–  Distribuição não é requisito da aplicação ou dos usuários, mas explora-se a distribuição para obter:

–  Aplicações mais rápidas: por exemplo, com uma pesquisa de banco de dados com menor tempo de resposta; cálculos complexos (ex. previsão de tempo), etc.

–  Aplicações mais confiáveis: sistemas de bancos, seguradoras, indústrias, etc.

–  Aplicações de maior capacidade: número de caixas eletrônicos e clientes na Internet fazendo operações bancárias / pedidos / pesquisas

Distribuição <-> Propriedades do sistema

•  Propriedades visíveis externamente: –  Desempenho no tempo: tempo de resposta,

vazão –  Confiabilidade e Disponibilidade –  Escalabilidade –  Segurança –  Possibilidade de evolução •  Características internas:

–  Uso eficiente de recursos (processadores, memória, disco) / eficiência

•  Capacidade ociosa

•  Balanceamento de carga em nós de processamento •  Grau de concorrência/paralelismo e aceleração –  Custo de comunicação (via rede)

Compartilhamento de recursos

•  Capacidade de processamento •  Memória

•  Armazenamento •  Disponibilidade

•  Dispositivos (impressoras, monitores) •  Energia (bateria)

•  Banda de rede / acesso

Paralelismo / Concorrência

•  Várias partes de um sistema executam simultaneamente

•  Concorrência normalmente é definida como paralelismo simulado, mesmo que não haja várias unidades de processamento

–  várias linhas de execução (threads) ou processos na mesma unidade de processamento

–  execução é multiplexada no tempo •  Ambos levam ao acesso compartilhado a

recursos

–  Risco de inconsistência de dados –  Eventual “gargalo” para desempenho

Níveis de paralelismo

1.  Paralelismo a nível de instrução

2.  Várias linhas de execução em um mesmo processador

3.  Várias linhas de execução em diferentes processadores ou núcleos (dual, quad core) 4.  Computadores paralelos

•  interconectados com redes dedicadas de alta velocidade, ou barramentos de alta velocidade 5.  Cluster de computadores

6.  Computadores na Internet

•  Redes compartilhadas, comunicação peer-to-peer, máquinas heterogêneas, problemas de segurança, …

(4)

Desafios para Aplicações distribuídas: interação entre partes

•  A complexidade às vezes está na forma de interação ou na coordenação entre as partes distribuídas

Rede B

Rede C Rede A

8 falácias da computação distribuída

“Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences.” 1. The network is reliable

2. Latency is zero 3. Bandwidth is infinite 4. The network is secure

5. Topology doesn't change

6. There is one administrator 7. Transport cost is zero

8. The network is homogeneous

•  Peter Deutsch + James Gosling

Heterogeneidade

•  Diferentes arquiteturas de hardware •  Diferentes sistemas operacionais

–  Windows (e suas versões), UNIX (e suas variantes), VMS e outros sistemas legados, sistemas operacionais de tempo real, sistemas operacionais para dispositivos móveis (e.g., Android, iOS, Windows Mobile)

•  Diferentes tipos de rede

–  Apesar do TCP/IP ter dominado os níveis de transporte/rede

•  Diferentes linguagens de programação •  Diferentes implementações

Padronização

•  Padronização de algumas partes necessárias para interoperabilidade

•  Interoperabilidade: capacidade de sistemas de trabalhar em conjunto

–  Protocolos como HTTP, TCP, RMI, ... –  APIs como Facebook Graph API,

• https://developers.facebook.com/tools/explorer/ 145634995501895/

• https://dev.twitter.com/rest/public

•  Padronização necessária para portabilidade

•  Portabilidade: capacidade de (partes/

componentes de) sistemas de serem usados em vários contextos

–  E.g., bibliotecas JDK

•  ... padrões também mudam com o tempo ...

Padronização e “Abertura” (Openness)

•  Interfaces mais importantes são publicadas (documentadas)

•  Mecanismo de comunicação uniforme, compartilhado

•  Cada parte pode ser construída

independentemente por diferentes vendedores/ desenvolvedores

–  Portanto devem se adequar a padrões e interfaces publicadas

Falhas independentes

•  Partes de um sistema podem falhar por diversos motivos

–  banais: falta de energia elétrica –  erros de projeto (programação) no

desenvolvimento de uma parte do sistema –  crashes de sistemas operacionais –  falha de hardware

(5)

Falhas independentes

•  “A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” (Lesley Lamport, 1992)

Particionamento de rede

Rede B

Rede C Rede A

Atraso, limitações de banda

•  Redes impõem atraso na comunicação •  Não somente pela capacidade de transmissão

(vazão) mas também pela distância geográfica

Escalabilidade

•  O sistema deverá permanecer eficiente mesmo com um aumento no número de usuários (carga) e recursos:

–  Sistema deverá comportar aumento de recursos –  Custo de adicionar recursos deve ser razoável –  Perda de desempenho com aumento de usuários/

carga deve ser limitado

•  Escalabilidade de sistemas distribuídos agrega valor:

–  Imagina uma web que fosse limitada no número de páginas, usuários conectados

simultaneamente…

Segurança

Rede B Rede C Rede A

Segurança

•  Confidentiality- Confidencialidade •  Integrity - Integridade •  Availability – Disponibilidade •  ... da informação e de serviços

•  Confidencialidade - propriedade que limita o acesso somente às entidades legítimas, ou seja, àquelas autorizadas pelo proprietário da informação

•  Integridade - propriedade que garante que a informação e serviços mantenham as características originais estabelecidas pelo proprietário

•  Disponibilidade - propriedade que garante que a informação e serviços estejam sempre disponíveis para o uso legítimo

(6)

Segurança

•  Hackers também podem explorar a distribuição para seu benefício

–  Ataques de larga escala que levam à

indisponibilidade de sistemas (Denial Of Service attacks)

–  Acesso a sistemas mal configurados e seus recursos; pense em:

•  Disco e Banda (pirataria, material ilegal) •  Processamento (para quebra de criptografia) •  Processamento e Banda (SPAM)

Diferentes domínios de administração

•  Partes do sistema podem pertencer a diferentes organizações

•  Autonomia no nível organizacional •  Diferentes tecnologias e padrões

•  Diferentes procedimentos de manutenção •  Exacerba o problema de heterogeneidade •  Exacerba o problema de falhas independentes •  Exacerba o problema de segurança

Aplicações centralizadas x Aplicações distribuídas

Custo de comunicação entre partes do sistema Falhas Risco de Particioname nto de rede Aplicações

Centralizadas Baixo Todas partes do sistema falham em conjunto

Não há

Aplicações

Distribuídas Mais alto / Variável Partes falham independentem ente

Partes podem ficar sem comunicação

Aplicações centralizadas x Aplicações distribuídas

Segurança Escalabilidade …

Aplicações

Centralizadas Controle mais simples Limitada por natureza …

Aplicações

Distribuídas Vários pontos de entrada

Depende de projeto adequado

Próxima aula: arquiteturas paralelas/distribuídas

1.  Paralelismo a nível de instrução

2.  Várias linhas de execução em um mesmo processador

3.  Várias linhas de execução em diferentes processadores ou núcleos (dual, quad core) 4.  Computadores paralelos

•  interconectados com redes dedicadas de alta velocidade

5.  Cluster de computadores 6.  Computadores na Internet

•  Redes compartilhadas, comunicação peer-to-peer, máquinas heterogêneas, problemas de segurança, …

Referências

Documentos relacionados

Assim, este trabalho apresenta uma abordagem que tem como objetivo principal: (i) analisar a cobertura de código levando em consideração os fluxos de chamadas existentes no sistema

APÊNDICES APÊNDICE 01: Tabela de frequência das disciplinas dos programas figura 07 Disciplinas dos programas Disciplina Gestão ambiental Acompanhamento e avaliação de programas

Nessa linha de pesquisa, no Brasil encontram-se os estudos realizados por Ferreira e Ellery (1996), Azzoni (2001), Souza e Porto Júnior (2002), e há ainda o de Lopes

A etapa 1, de revisão, busca o reconhecimento de elementos e estruturas já estabelecidas; a etapa 2, promove a seleção de obras de arquitetura que permitam

A produção dos materiais está dirigida especificamente para disciplinas de projeto e para disciplinas de representação gráfica, que se reestruturam na perspectiva

1 Estruturar o perfil das organizações convencionais através de critérios e indicadores bem definidos, listando aqueles que as caracterizam; 2 Avaliar como as organizações

Tabela 1 - Valores máximos e mínimos dos parâmetros físico- químicos – salinidade, oxigênio dissolvido (mg.L -1 ), pH e temperatura (ºC) – da coluna

Até aos dias de hoje os populares festejam com os alhos-porros e os martelinhos na mão; saltam as fogueiras espalhadas pela cidade; os vasos de manjericos com versos populares são