mo809l - ic.unicamp.brbit/ensino/mo809_1s13/parte1… · sistema onde componentes de hardware ou...
TRANSCRIPT
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MO809L Tópicos em Sistemas Distribuídos 1° semestre, 2013
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Apresentação • Professor • Alunos
2
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Curso • Sobre o que é:
• Arquiteturas de sistemas distribuídos; • Datacenters • Cluster, grid, cloud, P2P
• Escalonamento em sistemas distribuídos; • Comunicação entre tarefas em sistemas distribuídos; • Modelos/Linguagens de programação paralela/distribuída; • Cooperação entre sistemas paralelos e distribuídos; • Desafios
• Sobre o que não é: • Modelos síncrono e assíncrono; • Algoritmos distribuídos (eleição de líder, sincronização de relógio,
consenso, detecção de deadlock).
• Abordagem bottom-up
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Tópicos • Introdução ao paralelismo e aos sistemas distribuídos (definição,
arquitetura, redes); • Representação em grafos / complexidade; • Datacenters; • Web services; • Arquitetura cliente-servidor, P2P; • Mobilidade / Computação ubíqua; • Cluster Computing; • Grid Computing; • Cloud Computing; • Aplicações: tarefas independentes e dependentes / workflows; • Introdução ao escalonamento de tarefas; • GGPU, APU, Multi-core em computação paralela e distribuída; • Linguagens/paradigmas de programação (OpenMP, UPC, MPI, RMI,
Hadoop/MapReduce); • Economia de energia / Computação Verde; • HPC / e-Science / Computação Científica;
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Tópicos • Votação
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Avaliação • Seminário + trabalho
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Introdução - sistemas distribuídos • 1. Coleção de entidades independentes que colaboram
para resolver um problema que não poderia ser resolvido individualmente (Kshemkalyani e Singhal).
• 2. Sistema onde componentes de hardware ou software localizados em computadores em rede comunicam-se e coordenam suas ações através somente de troca de mensagens (Couloris, Dollimore e Kindberg).
• 3. Um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente (Tanenbaum e Van Steen).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Introdução - sistemas distribuídos • Existem desde sempre
• Comunicação entre agentes móveis na natureza
• Hoje • Dispositivos computacionais em rede • Ferramenta para resolver problemas • Vontade própria? Comportamento esperado? Autonomia até que
nível? • Firefox OS - http://www.youtube.com/watch?
feature=player_detailpage&v=-9vktI70iHc#t=165s • Amazon AWS
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização – sistemas distribuídos • Usuário só descobre que está usando um sistema
distribuído quando alguma falha impede de usar alguma aplicação (Lamport).
• Coleção de computadores que não compartilham memória ou relógio físico comum, que se comunicam por mensagens sobre uma rede de comunicação, e cada computador possui sua própria memória e executa seu próprio sistema operacional. Tipicamente são semi-autônomos e fracamente acoplados enquanto cooperam para resolver um problema coletivamente (Tanenbaum / Van Steen).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização – sistemas distribuídos • Um termo que descreve uma ampla gama de
computadores, desde sistemas fracamente acoplados como redes de longa distância, a sistemas fortemente acoplados como as LANs, e até sistemas muito fortemente acoplados como sistemas multiprocessados (Goscinski) .
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Características • Sem relógio físico comum • Sem memória compartilhada • Separação geográfica – quanto mais separado, “mais é”
um sistema distribuído • Clusters?
• Autonomia e heterogeneidade
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Componentes - hardware • Cada computador tem uma unidade de memória e de
processamento • São conectados por uma rede de comunicação • Fig 1
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Componentes - Software • Aplicação distribuída • Middleware • Sistema operacional • Pilha de protocolos de rede • Fig 2 • Bibliotecas/mecanismos de middleware:
• CORBA • RPC
• DCOM • RMI • SOAP
• MPI
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Motivação / requisitos • Existem aplicações onde a computação é intrinsecamente
distribuída • Ex: transferência bancária
• Compartilhamento de recursos • Hardware, software/bibliotecas, dados, licenças • Impossível replicar tudo em todo lugar • Impossível colocar tudo em um lugar só
• Acesso a recursos geograficamente distribuídos • Dados sensíveis ou muito grandes • Acesso a dados e supercomputadores a partir de dispositivos
móveis
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Motivação / requisitos • Aumentar confiabilidade
• Replicação de dados e de software • Disponibilidade: recurso deve estar disponível “sempre” • Integridade: estado/valor de um recurso deve ser
correto, sob acessos concorrentes de múltiplos processadores, de acordo com a semântica esperada pela aplicação
• Tolerância a falhas: habilidade de recuperação de falhas no sistema
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Motivação / requisitos • Melhorar taxa desempenho/custo • Oferecer escalabilidade – evitar gargalos • Modularidade / facilidade de expansão • Outras?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas distribuídos e sistemas multiprocessados / multicomputadores
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos • Existem sistemas que possuem algumas, mas não todas, as características de um sistema distribuído
• Como classificá-los? • São sistemas distribuídos ou sistemas multiprocessados?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Arquiteturas de memória • Dois aspectos: localização e política de acesso. • Uma memória para todos os processadores: memória compartilhada.
• Se memória não é compartilhada: acesso via meios explícitos de comunicação, como troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Arquiteturas de memória • Memória centralizada:
• Memória comum acessada por todos os processadores. • Memória distribuída:
• Fisicamente distribuída com os processadores. • Memória compartilhada
• Espaço de endereçamento global • Tempo de acesso diferente, em geral
• Memória distribuída • Troca de mensagens • Acesso através do processador • Hierárquica: alguns (2-4) processadores compartilham memória,
formando um nó de computação. Multiplos nós são conectados em um nível mais alto
• Fig 3
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Classificação • Sistemas multiprocessados. • Multicomputadores. • Processadores vetoriais
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Sistemas paralelos onde os múltiplos processadores tem
acesso direto a uma memória compartilhada, a qual forma um espaço de endereçamento único.
• Geralmente sem um relógio comum. • Geralmente constituem uma Uniform Memory Access
(UMA), onde a latência de acesso à memória é a mesma para todo processador.
• Comunicação entre processos: leitura/escrita da memória compartilhada.
• Processadores geralmente do mesmo tipo em um mesmo container.
• Fig 4
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Interconexão: bus ou multistage switch • Representação: grafo não direcionado
• Vértice = processador + memória local + switch • Aresta = enlace de comunicação entre processadores • Grau, diâmetro, largura de bisseção
• Fig 15
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Omega
• Omega: n processadores, n unidades de memória • (n/2) log2n switches 2x2, log2n níveis • Função de interconexão
• Função de roteamento
• Para nível s da rede, se o s+1-ésimo bit mais significativo de j é 0, vai pro fio de cima, se for 1 vai pro fio de baixo.
• Fig 5
The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Butterfly
• Função de interconexão • Depende de n e de s • Seja M=n/2 switches em cada nível, e <x,s> um switch x no nível
s • Existe uma aresta de <x,s> para <y, s+1> se:
• x=y • x XOR y tem exatamente um bit 1, que está no s+1-ésimo bit mais
significativo
• Função de roteamento • Num nível s, se s+1-ésimo bit mais significativo de j é 0, vai para
o fio de cima, senão vai para o fio de baixo. • Fig 6
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores • Sistema paralelo onde múltiplos processadores não têm
acesso direto a memória compartilhada. • Memória pode ou não formar um espaço de
endereçamento comum. • Geralmente não têm relógio comum. • Próximos fisicamente. • Fortemente acoplados (hardware e software
homogêneos). • Fig 7
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores • Espaço de endereçamento comum ou troca de
mensagens. • Espaço de endereçamento comum: geralmente
corresponde a arquitetura NUMA (non-uniform memory access).
• Topologias regulares e simétricas • Mesh, anel, torus, cubo, hipercubo • Propriedades matemáticas interessantes para roteamento • Fig 8
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Array processors (vector processors) • Processadores fisicamente próximos, fortemente
acoplados. • Relógio comum. • Podem não compartilhar memória e pode comunicar-se
por troca de mensagens. • Processamento e troca de dados sincronizados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos • Distinção/caracterização é importante para projeto de
algoritmos. • Considerar latências
• Muito acesso aos mesmos dados, muito acesso a dados locais e pouco acesso a dados distribuídos, etc.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia • Processamento (Flynn):
• SISD, MISD, SIMD, MIMD
• Programação • Memória compartilhada • Troca de mensagens • PRAM – Parallel Random Access Machine • LogP vs. PRAM
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia – Flynn • Quatro “modos” de processamento classificando:
• Como é o processamento de instruções • Quais são os dados de entrada de cada processador • Single Instruction, Single Data – SISD • Single Instruction, Multiple Data – SIMD • Multiple Instruction, Single Data – MISD • Multiple Instruction, Multiple Data – MIMD
Prof. Luiz Fernando Bittencourt IC - UNICAMP
SISD • Single instruction stream, single data stream • Modo “convencional” no paradigma de Von Neumann • Uma CPU • Uma unidade de memória • Conectados por bus • Fig 9
Prof. Luiz Fernando Bittencourt IC - UNICAMP
SIMD • Single instruction stream, multiple data stream. • Processamento: múltiplos processadores homogêneos. • Mesma instrução. • Itens de dados distintos. • Co-processamento (MMX, SSE). • Fig 10
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MISD • Multiple instruction stream, single data stream. • Operações diferentes • Mesmo dado • Fig 11
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MIMD • Multiple instruction stream, multiple data stream. • Instruções diferentes. • Dados diferentes. • Modo de operação de sistemas distribuídos e paralelos
em geral. • Sem relógio comum. • Fig 12
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Troca de mensagem, memória compartilhada, PRAM, LogP
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Memória compartilhada • Tem espaço de endereçamento comum no sistema. • Comunicação através de variáveis compartilhadas. • Variáveis de controle para sincronização entre processos
(p.ex. semáforos e monitores). • “Mais fácil” programar que troca de mensagens. • Paradigma de programação (memória compartilhada ou
troca de mensagem) nem sempre corresponde à organização de memória do sistema alvo.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
PRAM, LogP • Modelos para projeto e análise de algoritmos paralelos. • PRAM – Parallel Random Access Machine
• Memória ideal centralizada e compartilhada, processadores síncronos.
• Acesso à uma célula: admite acesso exclusivo ou concorrente. • Células diferentes podem ser acessadas concorrentemente. • Simples, porém não considera custos de comunicação entre
processos. • LogP
• Considera custo de comunicação entre processos. • Latência, Overhead, Gap (tempo mínimo entre mensagens), # de
Processadores. • Limita número de mensagens simultâneas (teto(L/g)). • Modelo assíncrono. • Fig 13
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento, paralelismo, concorrência e granularidade
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento • Grau de acoplamento (hardware ou software):
interdependência e “amarração” e/ou homogeneidade entre módulos. • Fortemente acoplados (SIMD, MISD / relógio comum) ou
fracamente acoplados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento • Ex MIMD:
• Multiprocessadores fortemente acoplados (com memória compartilhada Uniform Memory Access). Bus (Sequent, Encore) ou switch (NYU)
• Multiprocessadores fortemente acoplados (com memória compartilhada Non-Uniform Memory Access – SGI Origin 2000, Sun Ultra HPC – ou troca de mensagens – hipercubo, torus).
• Multicomputadores (sem memória compartilhada ou relógio comum) fracamente acoplados. Bus (NOW + LAN ou Myrinet), ou usando uma rede genérica, processadores podem ser heterogêneos. Sistema distribuído com característica de sistema paralelo. Abordagens diferentes de redes de longa distância.
• Multicomputadores fracamente acoplados, fisicamente distantes. Noção convencional de sistemas distribuídos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo / speedup em um sistema específico • Speedup relativo em uma máquina específica. • Depende do número de processadores e mapeamento do
código nesses processadores. • Razão entre o tempo T(1) em um único processador e
tempo T(n) com n processadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo em um programa paralelo/distribuído • Medida agregada da porcentagem de tempo que todos os
processadores estão executando instruções de CPU ao invés de aguardar comunicação.
• Se a medida agregada é somente função do código, paralelismo é independente de arquitetura.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Concorrência de um programa • Termo mais amplo. • Usado no contexto de sistemas distribuídos. • Razão entre o número de operações locais (sem
comunicação / memória compartilhada) e o número total de operações.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Granularidade de um programa • Razão entre quantidade de computação e quantidade de
comunicação do programa paralelo/concorrente. • Baixa granularidade: se encaixa melhor em sistemas
fortemente acoplados. • Latência pode degradar vazão.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Primitivas para comunicação distribuída
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Primitivas • Envio de mensagem: send();
• Pelo menos 2 parâmetros: destino e buffer com dados. • “Bufferizada” (buffer do kernel) ou não.
• Recepção de mensagem: receive(); • Pelo menos 2 parâmetros: origem (pode ser *) e buffer de destino. • Geralmente precisa de buffer, pois pode já ter recebido dados ao
ser invocada.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Síncrona / assíncrona • Primitiva síncrona
• Send() e receive() fazem handshake. • Processamento do send só termina depois que receive
correspondente foi invocado e a operação de recebimento foi terminada (dados copiados ao buffer de recepção).
• Primitiva assíncrona • Primitiva send é assíncrona se controle retorna ao processo depois
dos dados serem copiados para fora do buffer do usuário.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Bloqueante / não bloqueante • Primitiva bloqueante
• Controle retorna ao processo após o processamento da primitiva (síncrona ou assíncrona).
• Primitiva não bloqueante • Controle retorna ao processo imediatamente após invocá-la,
mesmo com a operação não terminada. • Para send, controle retorna ao proceso antes da cópia dos dados
para fora do buffer do usuário. • Para receive, controle pode retornar ao processo mesmo antes
dos dados chegarem do remetente. • Parâmetro de retorno é um handle que pode ser usado para
verificar o estado da chamada. • Fazer loop ou verificar periodicamente. • Wait com handles como parâmetro (blocking wait).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Características • Fig 14 • Send síncrono bloqueante: simplifica a lógica do
programa, mas pode diminuir eficiência do processo remetente (sender tem que esperar).
• Send não bloqueante assíncrono é útil para dados maiores.
• Send não bloqueante síncrono evita atrasos, principalmente quando receive ainda não foi invocado no destino.
• Receive não bloquente é útil para receber dados maiores ou quando o send ainda não foi invocado.
• Chamadas não bloqueantes oneram o programador, que precisa cuidar do término das operações.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sincronismo de processador • Outro nível de sincronismo • Processadores executam em passos sincronizados • Relógios sincronizados • Em sistemas distribuídos, sincronização em “passos”
pode ser implementada.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sincronismo de execução • Outra classificação no nível de sincronismo • Execução assíncrona
• Não tem sincronismo de processador • Não há limite para divergência de relógios • Atraso de mensagens: finito mas ilimitado • Sem limite de tempo para cada processo executar um passo • Fig 16
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sincronismo de execução • Execução síncrona
• Processadores sincronizados • Divergência de relógios limitada • Entrega de mensagem: ocorre em um passo lógico • Tempo limite para um processo executar um passo • Fig 17
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Emulação • Sistema assíncrono sobre um sistema síncrono
• Sistema síncrono: caso especial do assíncrono • Programa escrito para sistema assíncrono pode ser emulado
trivialmente em um sistema síncrono
• Sistema síncrono sobre um sistema assíncrono • Programa escrito para sistema síncrono pode ser emulado em
sistema assíncrono usando uma ferramenta chamada sincronizador.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Emulação • Memória compartilhada pode ser emulada em um sistema
de troca de mensagens e vice-versa. • Quatro classes de programas.
• Assíncrono, troca de mensagens (AMP) • Síncrono, troca de mensagens (SMP) • Assíncrono, memória compartilhada (ASM) • Síncrono, memória compartilhada (SSM)
• Se um sistema A pode ser emulado por um sistema B, e se um problema não pode ser resolvido em B, também não pode ser em A.
• Se pode ser resolvido em A, pode ser resolvido em B. • Fig 18
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Emulação • As quatro classes oferecem computabilidade (i.e., que
problemas podem e não podem ser resolvidos) equivalente em sistemas livres de falhas.
• Em sistemas suscetíveis a falhas, sistemas síncronos oferecem maior computabilidade que assíncronos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios • Primórdios - 1970/ARPANET
• Acesso a dados remotos sob falhas • Projeto de sistemas de arquivos • Projeto de estrutura de diretórios • Outros requisitos e problemas surgiram com o passar do tempo
• Relacionados a sistemas • Relacionados a algoritmos • Relacionados a tecnologias/avanços recentes
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios - Sistema • Comunicação: mecanismos apropriados para
comunicação entre processos. • Processos: gerência de processos e threads em clientes/
servidores; migração de código; software e agentes móveis.
• Nomenclatura: esquemas de nomenclatura robustos para localização de recursos e processos transparentemente, em especial para sistemas móveis.
• Sincronização: coordenação entre processos é essencial. Outras formas de exclusão mútua, sincronização de relógio, relógios lógicos, algoritmos para manutenção global de estado.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios - Sistema • Armazenamento e acesso a dados: esquemas de
armazenamento, acesso rápido e escalável a dados na rede. Projeto de sistemas de arquivo direcionados a sistemas distribuídos.
• Consistência e replicação: evitar gargalos; fornecer acesso rápido a dados e escalabilidade. Gerência de réplicas e consistência.
• Tolerância a falhas: manter funcionamento eficiente mesmo na presença de falhas de enlace, processos ou nós. Resiliência de processos, comunicação confiável, checkpointing e recuperação, detecção de falhas.
• Segurança
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios - Sistema • Transparência em diversos níveis: acesso, localização,
migração, relocação, replicação, concorrência, falha. • Escalabilidade e modularidade: algoritmos, dados e
serviços tanto distribuídos quanto possível. Técnicas como replicação, caching e gerência de cache, e processamento assíncrono ajudam a alcançar escalabilidade.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios – Algorítmicos • Modelos de execução e arcabouços: especificações
formais de modelos e conjuntos de ferramentas para raciocínio, projeto e análise de programas distribuídos.
• Algoritmos em grafos dinâmicos: algoritmos importantes para comunicação, disseminação de dados, localização de objetos, busca de objetos. Topologia e conteúdo dinâmicos, algoritmos influenciam latência, tráfego e congestionamento.
• Tempo e estado global: fornecimento de tempos físico e lógico precisos. Estado global também envolve noção de tempo; obtenção de estado coordenada. Medida de concorrência também envolve tempo.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios – Algorítmicos • Comunicação em grupo, multicast, entrega de
mensagens ordenadas: algoritmos para comunicação e gerência eficiente de grupos dinâmicos sob falhas.
• Monitoramento: algoritmos online para monitorar e mapear eventos e tomar ações.
• Ferramentas para desenvolvimento e teste de programas distribuídos.
• Depuração de programas distribuídos: desafio devido à concorrência; mecanismos e ferramentas são necessários.
• Algoritmos para gerência e replicação de dados, atualização de réplicas e cópias em cache. Alocação de cópias no sistema.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios – Algorítmicos • WWW – cache, busca, escalonamento: prefetching/
padrões de acesso, redução de latência de acesso, busca de objetos, distribuição de carga.
• Abstrações de memória compartilhada. • Confiabilidade e tolerância a falhas. • Balanceamento de carga: aumentar vazão e diminuir
latência. Migração de dados, migração de computação, escalonamento distribuído.
• Escalonamento em tempo real: aplicações sensíveis ao tempo. Problema se visão global do sistema não está disponível. Difícil prever atrasos de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios – Algorítmicos • Desempenho: alta vazão pode não ser o objetivo primário
de um sistema distribuído, mas desempenho é importante. • Métricas: identificação de métricas apropriadas para medir
desempenho teórico e prático (medidas de complexidade versus medida com parâmetros/estatísticas reais).
• Ferramentas e métodos de medição: metodologias apropriadas e precisas para obtenção de dados confiáveis para as métricas definidas.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios - Aplicações e avanços recentes • Sistemas móveis: meio de broadcast comparilhado;
problemas de alcance e interferência. Roteamento, gerência de localidade, alocação de canais, estimativa de posição, são problemas a serem tratados. Estação-base versus ad-hoc.
• Redes sensores: monitorar eventos distribuídos / streaming de eventos. Economia de energia na comunicação/middleware.
• Computação ubíqua e internet das coisas: auto-organização, recursos limitados; inteligência no núcleo da rede?
• Peer-to-peer: mecanismos de armazenamento persistente, busca e obtenção escalável, privacidade.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios - Aplicações e avanços recentes • Publish-subscribe, distribuição de conteúdo e multimídia:
filtros de informação dinâmicos. Mecanismos eficientes para distribuição aos interessados e de inscrição de interessados. Mecanismos de agregação de informação e de distribuição de dados com grande volume.
• Grades computacionais: ciclos de CPUs ociosas; escalonamento e garantias de tempo real; predição de desempenho; segurança.
• Nuvens computacionais: virtualização; escalonamento / custos monetários; modelos econômicos; segurança.
• Segurança: soluções escaláveis para confidencialidade, autenticação e disponibilidade sob ações maliciosas.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Fundamentos de Sistemas Distribuídos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistema Distribuído • Um conjunto de computadores independentes que se
apresenta a seus usuários como um sistema único e coerente. • Consiste de componentes = computadores / dispositivos. • Usuários (pessoas ou programas): acham que é um único sistema
centralizado. • Componentes autônomos precisam colaborar. • Como estabelecer tal colaboração = cerne do desenvolvimento de
sistemas distribuídos. • Não há restrição de como tais componentes se conectam: podem
até estar dentro de um único sistema (como vimos nos sistemas multiprocessados...).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistema Distribuído • Modo como se comunicam: oculto do usuário. • Organização interna: oculta do usuário. • Usuários / aplicações: podem interagir com o SD de
maneira consistente e uniforme, independente de localização.
• Fácil de expandir / escalável. • Continuamente disponível (como um todo – partes podem
falhar ou deixar o sistema independentemente).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Middleware • Suporte a computadores e redes heterogêneas: camada
de software. • Entre aplicações/usuário e S.O. • Middleware se estende por múltiplas máquinas e oferece
a mesma interface para diversas aplicações. • Proporciona meios para que componentes de uma
aplicação distribuída se comuniquem. • Oculta diferenças de hardware e sistemas operacionais. • Fig 19.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas • Fácil acesso a recursos; • Ocultar distribuição dos recursos; • Ser aberto para poder ser expandido (escalabilidade).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas – Acesso aos recursos • Facilitar acesso a recursos remotos e seu
compartilhamento de maneira controlada e eficiente. • Uma razão óbvia: economia.
• 1 impressora para todos • 1 supercomputador para todos • 1 sistema de armazenamento de alto desempenho para todos. • ...
• Colaboração • Edição online de documentos, imagens, apresentações,etc. em
tempo real.
• Segurança: hoje não há muita proteção (cartões de crédito, privacidade, etc).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Transparência • Ocultar o fato de recursos estarem distribuídos. • Diferentes aspectos de transparência. • Acesso: esconde diferenças na representação de dados e como um recurso é acessado. • Ocultar arquitetura de máquina • Acordo de representação de dados • Convenções diferentes em sistemas diferentes
• Localização: esconde a localização de um recurso. • Nomes lógicos. Ex.: URLs
• Migração: esconde o fato que um recurso pode ser movido para outra localidade.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Transparência • Migração: esconde o fato que um recurso pode ser movido para outra localidade. • Ex: URLs: www.abcd.com/index.html - não importa onde estava
ou onde está agora, parece igual ao usuário. • Relocação: esconde o fato que um recurso pode ser
movido para outra localidade enquanto em uso. • Ex.: laptops, celulares, migração de máquinas virtuais.
• Replicação: esconde fato de que um recurso é replicado. • Réplicas com mesmo nome. • Em geral sistema que suporta transparência de replicação deve
suportar transparência de localização. • Ex.: caches
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Transparência • Concorrência: esconde que um recurso pode ser compartilhado por diversos usuários competitivos. • Compartilhamento pode ser competitivo: acesso a disco, banco de
dados, etc. • Importante: consistência. Possível mecanismo: transações.
• Falha: esconde falha/recuperação de um recurso. • “Você sabe que está usando um sistema distribuído quando uma
falha em um computador do qual você nunca ouviu falar impede que você faça qualquer trabalho.” (Leslie Lamport)
• Sistema superou a falha sem percepção do usuário. • Problema: diferenciar recursos mortos de recursos lentos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Grau de transparência • Ocultar todos os aspectos de distribuição pode não ser desejável / possível. • Ex.: jornal da manhã por e-mail/celular. • Ex. 2: restrição de camada física: limitações do meio físico /
processamento em roteadores. • Transparência versus desempenho: tentar mascarar falha
insistentemente pode causar atraso. • Consistência entre várias réplicas em diferentes continentes:
alteração deve propagar-se para todas as cópias antes de novas operações; pode demorar muito e não pode ser ocultado dos usuários.
• Expor localização: pode ser melhor que ocultar, com mobilidade e ubiqüidade
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Grau de transparência • Total transparência nem sempre é vantajoso. • Deve-se levar em conta os propósitos do sistema
distribuído.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Abertura • Sistema distribuído aberto oferece serviços de acordo com regras padronizadas. • Descrição de sintaxe e semântica. • Ex.: mensagens em protocolos de rede. • Em SDs: interfaces – linguagem de definição de interface (IDL). • IDLs:
• Sintaxe - nomes de funções que estão disponíveis, tipos de parâmetros, valores de retorno, exceções.
• Semântica: parte difícil. • Permite que processo arbitrário se comunique com outro processo que
fornece a interface especificada. • Permite construção independente e complementar de sistemas
distribuídos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Abertura • Interoperabilidade: caracteriza até que ponto duas
implementações de sistemas ou componentes de fornecedores diferentes devem co-existir e trabalhar em conjunto.
• Portabilidade: caracteriza até que ponto uma aplicação para um SD A pode ser executada, sem modificação, em um SD B que implementa as mesmas interfaces.
• Deve ser fácil adicionar/substituir componentes.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Abertura – política e mecanismo • Alcançar flexibilidade: componentes pequenos e de fácil
substituição / adaptação. • Definições não somente para interfaces “externas”, mas
também internas. • Sistemas monolíticos tendem a ser fechados. • Cache web: usuário pode configurar política de cache
(tamanho do cache, por exemplo). • Não consegue tomar decisão baseado em conteúdo do
documento, ou qual documento deve ser removido quando estiver cheia. • Componente com políticas do usuário seria ideal, mas interface
com browser é necessária.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Escalabilidade • Escalabilidade em três dimensões:
• Em tamanho – fácil adicionar usuários e recursos. • Em termos geográficos – usuários e recursos podem estar
distantes. • Em termos administrativos – fácil/possível de gerenciar mesmo
abrangendo muitas organizações e recursos.
• Sistema escalável em uma ou mais dimensões frequentemente apresenta perda de desempenho com ampliação.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas - Escalabilidade • Serviços centralizados. Ex.: único servidor para todos os usuários. • Problema: muitos usuários / aplicações. • Ás vezes é necessário por questões de segurança.
• Dados centralizados. Ex.: um único catálogo de telefones online. • Problema: gargalo no acesso – rede e disco.
• Algoritmos centralizados. Ex.: realizar roteamento baseado em informações completas. • Problema: colher e transportar toda a informação a cada alteração
sobrecarrega a rede. • Preferência por algoritmos descentralizados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Escalabilidade • Características de algoritmos descentralizados: • Nenhuma máquina tem informações completas sobre o
estado do sistema. • Máquinas tomam decisões baseadas em informações
locais. • Falha em uma máquina não arruína o algoritmo. • Não há suposição implícita que um relógio global
existe.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Escalabilidade • Relógio global:
• “Precisamente às 12:00:00 todas as máquinas anotarão o tamanho da sua fila de saída.” – precisaria de sincronização exata dos relógios. Quanto maior o sistema, maior a incerteza na sincronização.
• Escalabilidade geográfica • Difícil ampliar sistemas de LANs para larga escala distribuída, pois
muitas vezes são baseados em comunicação síncrona. • Funciona bem quando comunicação é rápida. • Comunicação em longa distância: inerentemente não confiável. • Ex.: abrir X11 à distância.
• Escalabilidade entre diferentes domínios administrativos • Políticas conflitantes de utilização e/ou pagamento.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Escalabilidade / técnicas • Ocultar latências de comunicação
• Não aguardar por resposta: comunicação assíncrona. • Reduzir comunicação global. • Ex.: validação de formulário. Fig 20.
• Distribuição • Dividir componente e espalhar pelo sistema. • Ex.: DNS. Fig 21.; Web.
• Replicação • Aumenta disponibilidade • Diminui latência • Equilibra carga • Ex.: Cache. Problema: consistência. Tolerância? Sincronização
global.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Armadilhas • Suposições falsas comuns feitas por desenvolvedores: • Rede é confiável; • Rede é segura; • Rede é homogênea; • A topologia não muda; • Latência é zero; • Largura de banda é infinita; • Custo do transporte é zero; • Há um administrador.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Tipos de sistemas distribuídos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Tipos de SDs • Sistemas de computação distribuídos • Sistemas de informação distribuídos • Sistemas embarcados distribuídos (pervasivos)
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de computação distribuídos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de Computação Distribuídos • Utilizados para tarefas de computação (frequentemente
de alto desempenho). • Computação em cluster • Computação em grade • Computação em nuvem
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Cluster Computing • Tornaram-se populares pela razão preço/desempenho.
• Estações mais potentes e mais baratas • Rede melhor
• Computação intensiva paralela. • Ex.: Beowulf. Fig 22.
• Mestre • Alocação de nós / fila / escalonamento • Interface para usuário • Executa middleware para execução de programas e gerência do
cluster. • Nós de computação: SO padrão pode ser suficiente.
• Bibliotecas de execução em sistemas paralelos • Migração de processos: nó nativo para qualquer outro nó.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Computação em grade • Cluster: homogêneo. • Grade: heterogênea, nenhuma premissa adotada em
relação a hardware, S.O., rede, domínio administrativo, política de segurança, etc.
• Recursos de diferentes organizações reunidos para permitir colaboração.
• Organização virtual: pessoas em uma organização virtual têm direitos sobre recursos dessa organização. • Servidores de computação (inclusive clusters), armazenamento,
instrumentos, bancos de dados, equipamentos, sensores, telescópios, etc.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Computação em grade • Software de grade: grande parte com finalidade de prover
acesso a recursos de diferentes domínios administrativos. • Fig 23. • Camada base: interfaces para recursos locais em site
específico. Consultar estado de recursos e gerência de recursos locais.
• Camada de conectividade: protocolos de comunicação para suportar transações utilizando múltiplos recursos. Ex.: transferência de dados, autenticação, protocolos de segurança.
• Camada de recursos: gerência de um único recurso. Ex.: criar processo, ler dados. Responsável por controle de acesso – necessita autenticação.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Computação em grade • Camada coletiva: manipular acesso a múltiplos recursos.
Serviços de descoberta de recursos, alocação / escalonamento de tarefas para múltiplos recursos, replicação de dados, etc. • Muitos serviços - pode consistir de muitos protocolos
independentes.
• Camada de aplicação: aplicações que usam o ambiente virtual dentro da grade.
• Coletiva + conectividade + recursos = middleware da grade.
• Noção de “site” é comum: tendência do SOA (acesso às camadas através de serviços web).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Computação em nuvem • Introduz noção de “computação como serviço”. • Utility grids. • Recursos virtualizados. • Diferentes provedores de serviço. IaaS, PaaS, SaaS. • Pagamento pelo uso. • Nuvem pública / privada / híbrida. • Evita alto investimento inicial. • Fig. 24 • Visões: provedor e cliente.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de informação distribuídos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de informação distribuídos • Organizações com muitas aplicações em rede • Interoperabilidade difícil • Mais fácil integrar as aplicações a um sistema de
informação distribuído • Muitos casos: aplicação de rede cliente-servidor /
requisição-resposta • Integração: permitir que diversas requisições (para
diferentes servidores) fossem “empacotadas” em uma única • Transação distribuída: todas - ou nenhuma - seriam executadas
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de informação distribuídos • Com avanço das aplicações, houve distinção entre
bancos de dados e processamento • Necessidade de comunicação entre aplicações
• Integração de aplicações empresariais - EAI
• Duas formas de sistemas distribuídos: transações e integração de aplicações
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Bancos de dados: operações sob a forma de transações • Requerem primitivas especiais a serem fornecidas pelo
sistema distribuído • Primitivas dependem dos tipos de objetos na transação • Ex: READ, WRITE • READ: lê dados de um arquivo, tabela, etc. • WRITE: escreve dados em um arquivo, tabela, etc.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • BEGIN_TRANSACTION: marca o início de uma
transação. • END_TRANSACTION: finaliza transação e tenta commit. • Delimitam escopo da transação • Operações entre elas formam o corpo da transação: ou
todas são executadas, ou nenhuma é executada • Procedimentos de biblioteca, chamadas de sistema, etc.
• ABORT_TRANSACTION: mata a transação e restaura valores anteriores.
• RPC transacional: chamadas de procedimentos remotos encapsuladas em uma transação.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Propriedades (ACID):
• Atomicidade: (para o mundo externo) transação ocorre de forma indivisível.
• Consistência: transação não viola invariantes do sistema.
• Isolamento: transações concorrentes não interferem uma na outra.
• Durabilidade: uma vez dado commit, as mudanças são permanentes.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Atomicidade
• Garante que cada transação acontece de forma completa, ou não acontece.
• Única ação indivisível e instantânea • Outros processos não enxergam estados intermediários
de uma transação
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Consistência
• Invariantes válidos antes da transação continuarão válidos após a transação
• Ex.: Lei da conservação do dinheiro • Invariante violado durante a transação, mas invisível a
outros processos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Isolamento
• Transações são isoladas ou serializáveis • Duas ou mais transações ao mesmo tempo, mesmo resultado final se serializadas
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Durabilidade
• Uma vez realizado o commit, os resultados tornam-se permanentes
• Falhas (após commit) não podem desfazer/comprometer os resultados
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações aninhadas • Fig. 25. • Transações de um nível mais alto se ramificam • Ganho de desempenho e/ou programação mais simples • Problema: transações em paralelo podem realizar commit
enquanto outras ainda não terminaram • Durabilidade: somente para a transação pai
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações aninhadas • Profundidade arbitrária • Fig 26 • Administrar resultados das transações • Transação aborta: cópia privada “desaparece” • Transação faz commit: pai pode ver seus dados • Protocolos de locks
• Evitar deadlocks e inconsistências • Ex.: protocolo de lock em duas fases e variantes
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Monitor de processamento de transações (monitor TP) • Componente que administra transações distribuídas ou
aninhadas. • Núcleo para integração de aplicações no nível do servidor
ou do banco de dados. • Permite acesso a vários servidores/bancos de dados
usando um modelo de programação transacional. • Fig. 27.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Integração de aplicações • Integração de aplicações corporativas via middleware. • Não apenas requisição – resposta • Resultou em muitos modelos diferentes de comunicação • Troca direta de informações entre aplicações • Fig 28.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Integração de aplicações • Chamada de procedimento remoto (RPC)
• Componente de aplicação envia requisição a outro componente
• Chamada é feita localmente, empacotada em mensagem e enviada
• Chamada de objetos remotos • Invocação de método remoto (RMI) • Essencialmente mesmo que RPC, mas com objetos ao
invés de aplicações
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Integração de aplicações • RPC e RMI
• Chamador e chamado precisam estar ligados e funcionando
• Precisam ter uma referência ao outro para saber como chamar
• Middleware orientado a mensagem – MOM • Aplicações enviam mensagens a pontos lógicos de
contato • Aplicações indicam interesse em tipo de mensagem • Middleware cuida para que mensagens cheguem • Sistemas publish/subscribe
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas distribuídos pervasivos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas distribuídos pervasivos • Sistemas vistos até agora são em grande parte estáveis: nós fixos, conexões permanentes
• Sucesso de transparência de distribuição • Falhas são raramente percebidas. • Localização oculta de nós na rede.
• Introdução de dispositivos móveis e embarcados • Instabilidade é esperada • Equipamentos pequenos, com bateria, móveis, conexão sem fio • Inerentemente distribuído • Podem ser configurados pelo proprietário; melhor: devem
descobrir ambiente
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas distribuídos pervasivos • Requisitos de aplicações pervasivas:
• Adotar/aceitar mudanças contextuais • Ciente de que há mudanças • Ex.: descobrir que a rede não está mais disponível devido
à movimentação • Incentivar composição ad hoc
• Configuração do conjunto de aplicações tem que ser fácil • Reconhecer compartilhamento como padrão
• Possivelmente precisam fornecer informações
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas distribuídos pervasivos • Na presença de mobilidade
• Dispositivo deve suportar adaptação fácil e dependente de aplicação
• Descobrir serviços com eficiência
• Transparência de distribuição? • Distribuição de dados, processos e controle é inerente
ao sistema • Melhor expor distribuição?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas domésticos • Um ou mais computadores pessoais • TV • Equipamentos de áudio/vídeo • Jogos • Smartphones • PDAs • Eletrodomésticos • Câmeras • Relógios • Iluminação
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas domésticos • Usuários não podem ser responsáveis por manter o sistema e/ou corrigir falhas
• Autoconfiguração • Autogerência • UPnP
• Obtenção de IP, descoberta de dispositivos • Não trata atualizações/compatibilidade
• Espaço pessoal • Como, o que, quando compartilhar • Sincronização de dispositivos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas domésticos • Possível evolução:
• Discos grandes: 1 “máquina” mestre • Dispositivos espalhados pela casa fornecem interface • “Nuvem privada” • E nuvem pública? • Sistemas recomendadores
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de tratamento de saúde • Evitar hospitalização • BAN – Body area network • De preferência sem fio
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de tratamento de saúde
• Monitoramento de pessoas em um sistema de saúde pervasivo. • (a) concentrador local; ou • (b) conexão sem fio contínua.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de tratamento de saúde • Questões a serem tratadas:
• Onde e como dados compartilhados devem ser armazenados?
• Como prevenir perda de dados cruciais? • Que infraestrutura é necessária para gerar e propagar
alertas? • Como médicos podem fornecer feedback online? • Como robustez extrema de sistema de monitoramento
pode ser alcançada? • Quais as políticas de segurança e como políticas
podem ser impostas?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de tratamento de saúde • Dispositivos devem suportar processamento de dados na rede
• Agregar dados de monitores antes de armazenamento permanente / envio
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Redes de sensores • Usadas também para processar informações • Mais do que apenas fornecer serviços de comunicação
• Semelhança com redes em malha • Dezenas a centenas de milhares de nós • Geralmente usa redes sem fio e alimentação por bateria – eficiência
• Relação com sistemas distribuídos: redes sensores = banco de dados distribuído • Qual o volume de tráfego na rodovia X?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Redes de sensores • Fig 29: armazenamento e processamento somente no servidor do operador da rede. • Requer que sensores enviem tudo pela rede
• Fig 30: armazenamento e processamento somente nos sensores. • Despreza capacidade de agregação: processamento de dados na
rede
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Redes de sensores • Processamento de dados na rede
• Repassar uma consulta a todos os nós ao longo de uma árvore que abranja todos os nós e agregar resultados na volta à raiz
• Agregação onde 2 ou mais ramos se encontram
• Como montar (dinamicamente) árvore eficiente? • Como agregar os resultados? • O que acontece se enlaces falham? • TinyDB: interface de banco de dados em redes sensores
• Problema: árvore de uma única raiz pode não ser tão eficiente • Nós especiais que concentram resultados e consultas relacionadas
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Resumo
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Introdução - sistemas distribuídos • 1. Coleção de entidades independentes que colaboram
para resolver um problema que não poderia ser resolvido individualmente (Kshemkalyani e Singhal).
• 2. Sistema onde componentes de hardware ou software localizados em computadores em rede comunicam-se e coordenam suas ações através somente de troca de mensagens (Couloris, Dollimore e Kindberg).
• 3. Um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente (Tanenbaum e Van Steen).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Características • Sem relógio físico comum • Sem memória compartilhada • Separação geográfica – quanto mais separado, “mais é”
um sistema distribuído • Autonomia e heterogeneidade
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Sistemas paralelos onde os múltiplos processadores tem
acesso direto a uma memória compartilhada, a qual forma um espaço de endereçamento único.
• Geralmente sem um relógio comum. • Geralmente constituem uma Uniform Memory Access
(UMA), onde a latência de acesso à memória é a mesma para todo processador.
• Comunicação entre processos: leitura/escrita da memória compartilhada.
• Processadores geralmente do mesmo tipo em um mesmo container.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas multiprocessados • Interconexão: bus ou multistage switch • Representação: grafo não direcionado
• Vértice = processador + memória local + switch • Aresta = enlace de comunicação entre processadores • Grau, diâmetro, largura de bisseção
• Switch: omega e butterfly
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores • Sistema paralelo onde múltiplos processadores não têm
acesso direto a memória compartilhada. • Memória pode ou não formar um espaço de
endereçamento comum. • Geralmente não têm relógio comum. • Próximos fisicamente. • Fortemente acoplados (hardware e software
homogêneos).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Multicomputadores • Espaço de endereçamento comum ou troca de
mensagens. • Espaço de endereçamento comum: geralmente
corresponde a arquitetura NUMA (non-uniform memory access).
• Topologias regulares e simétricas • Mesh, anel, torus, cubo, hipercubo • Propriedades matemáticas interessantes para roteamento
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Array processors (vector processors) • Processadores fisicamente próximos, fortemente
acoplados. • Relógio comum. • Podem não compartilhar memória e pode comunicar-se
por troca de mensagens. • Processamento e troca de dados sincronizados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos • Distinção/caracterização é importante para projeto de
algoritmos. • Considerar latências
• Muito acesso aos mesmos dados, muito acesso a dados locais e pouco acesso a dados distribuídos, etc.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia – Flynn • Quatro “modos” de processamento classificando:
• Como é o processamento de instruções • Quais são os dados de entrada de cada processador • Single Instruction, Single Data – SISD • Single Instruction, Multiple Data – SIMD • Multiple Instruction, Single Data – MISD • Multiple Instruction, Multiple Data – MIMD
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Troca de mensagem / memória compartilhada • Memória compartilhada
• Tem espaço de endereçamento comum no sistema. • Comunicação através de variáveis compartilhadas. • Variáveis de controle para sincronização entre processos (p.ex.
semáforos e monitores).
• Paradigma de programação (memória compartilhada ou troca de mensagem) nem sempre corresponde à organização de memória do sistema alvo.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
PRAM, LogP • Modelos para projeto e análise de algoritmos paralelos. • PRAM – Parallel Random Access Machine
• Memória ideal centralizada e compartilhada, processadores síncronos.
• Acesso à uma célula: admite acesso exclusivo ou concorrente. • Células diferentes podem ser acessadas concorrentemente. • Simples, porém não considera custos de comunicação entre
processos. • LogP
• Considera custo de comunicação entre processos. • Latência, Overhead, Gap (tempo mínimo entre mensagens), # de
Processadores. • Limita número de mensagens simultâneas (teto(L/g)). • Modelo assíncrono.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento • Grau de acoplamento (hardware ou software):
interdependência e “amarração” e/ou homogeneidade entre módulos. • Fortemente acoplados (SIMD, MISD / relógio comum) ou
fracamente acoplados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo / speedup em um sistema específico • Speedup relativo em uma máquina específica. • Depende do número de processadores e mapeamento do
código nesses processadores. • Razão entre o tempo T(1) em um único processador e
tempo T(n) com n processadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Concorrência de um programa • Termo mais amplo. • Usado no contexto de sistemas distribuídos. • Razão entre o número de operações locais (sem
comunicação / memória compartilhada) e o número total de operações.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Granularidade de um programa • Razão entre quantidade de computação e quantidade de
comunicação do programa paralelo/concorrente. • Baixa granularidade: se encaixa melhor em sistemas
fortemente acoplados. • Latência pode degradar vazão.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Primitivas • Envio de mensagem: send();
• Pelo menos 2 parâmetros: destino e buffer com dados. • “Bufferizada” (buffer do kernel) ou não.
• Recepção de mensagem: receive(); • Pelo menos 2 parâmetros: origem (pode ser *) e buffer de destino. • Geralmente precisa de buffer, pois pode já ter recebido dados ao
ser invocada.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Síncrona / assíncrona • Primitiva síncrona
• Send() e receive() fazem handshake. • Processamento do send só termina depois que receive
correspondente foi invocado e a operação de recebimento foi terminada (dados copiados ao buffer de recepção).
• Primitiva assíncrona • Primitiva send é assíncrona se controle retorna ao processo depois
dos dados serem copiados para fora do buffer do usuário.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Bloqueante / não bloqueante • Primitiva bloqueante
• Controle retorna ao processo após o processamento da primitiva (síncrona ou assíncrona).
• Primitiva não bloqueante • Controle retorna ao processo imediatamente após invocá-la,
mesmo com a operação não terminada. • Para send, controle retorna ao proceso antes da cópia dos dados
para fora do buffer do usuário. • Para receive, controle pode retornar ao processo mesmo antes
dos dados chegarem do remetente. • Parâmetro de retorno é um handle que pode ser usado para
verificar o estado da chamada. • Fazer loop ou verificar periodicamente. • Wait com handles como parâmetro (blocking wait).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Emulação • Memória compartilhada pode ser emulada em um sistema
de troca de mensagens e vice-versa. • Quatro classes de programas.
• Assíncrono, troca de mensagens (AMP) • Síncrono, troca de mensagens (SMP) • Assíncrono, memória compartilhada (ASM) • Síncrono, memória compartilhada (SSM)
• As quatro classes oferecem computabilidade (i.e., que problemas podem e não podem ser resolvidos) equivalente em sistemas livres de falhas.
• Em sistemas suscetíveis a falhas, sistemas síncronos oferecem maior computabilidade que assíncronos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Desafios • Relacionados a sistemas • Relacionados a algoritmos • Relacionados a tecnologias/avanços recentes
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Metas de SDs • Fácil acesso a recursos; • Ocultar distribuição dos recursos (nem sempre); • Ser aberto para poder ser expandido (escalabilidade). • Em tamanho – fácil adicionar usuários e recursos. • Em termos geográficos – usuários e recursos podem
estar distantes. • Em termos administrativos – fácil/possível de gerenciar
mesmo abrangendo muitas organizações e recursos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Tipos de SDs • Sistemas de computação distribuídos • Sistemas de informação distribuídos • Sistemas embarcados distribuídos (pervasivos)
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de Computação Distribuídos • Utilizados para tarefas de computação (frequentemente
de alto desempenho). • Computação em cluster • Computação em grade • Computação em nuvem
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas de informação distribuídos • Organizações com muitas aplicações em rede • Interoperabilidade difícil • Mais fácil integrar as aplicações a um sistema de
informação distribuído • Muitos casos: aplicação de rede cliente-servidor /
requisição-resposta • Integração: permitir que diversas requisições (para
diferentes servidores) fossem “empacotadas” em uma única • Transação distribuída: todas - ou nenhuma - seriam executadas
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações • Propriedades (ACID):
• Atomicidade: (para o mundo externo) transação ocorre de forma indivisível.
• Consistência: transação não viola invariantes do sistema.
• Isolamento: transações concorrentes não interferem uma na outra.
• Durabilidade: uma vez dado commit, as mudanças são permanentes.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Transações aninhadas • Profundidade arbitrária • Administrar resultados das transações • Protocolos de locks
• Evitar deadlocks e inconsistências • Ex.: protocolo de lock em duas fases e variantes
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas distribuídos pervasivos • Introdução de dispositivos móveis e embarcados
• Instabilidade é esperada • Equipamentos pequenos, com bateria, móveis, conexão sem fio • Inerentemente distribuído • Podem ser configurados pelo proprietário; melhor: devem
descobrir ambiente