Buscar

Introdução a Sistemas Distribuídos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Prof. Luiz Fernando Bittencourt IC - UNICAMP
MC714
Sistemas Distribuídos
2° semestre, 2018
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
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
Características
• Sem relógio físico comum
• Introduz a noção de distribuição, dando origem à 
assincronia inerente entre processadores.
• Sem memória compartilhada
• Requer troca de mensagens para comunicação.
• Deve-se notar que pode fornecer abstração de um 
espaço de endereçamento comum através da 
abstração de memória compartilhada distribuída.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas	paralelos	-
classificação	
• Sistemas multiprocessados
• Multicomputadores
• Processadores vetoriais
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos
Computação distribuída Computação paralela
Multicomputadores
Memória compartilhada
NUMA
UMA
Processadores vetoriais
Switch centralizado
Switch decentralizado
Bus
Troca de mensagens Espaço de end. único
• Tarefa: achar inconsistências na figura acima em relação aos slides anteriores.
• Considere dois níveis abaixo. Análise pode ser diferente para cada um deles?
• Programação -> memória compartilhada ou troca de mensagens?
• Arquitetura -> como é a disposição física dos componentes?
Sistemas multiprocessados
Exercício
Relógio físico comum
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização	de	sistemas	paralelos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização	de	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
Caracterização	de	sistemas
paralelos
• Uso primário de sistemas paralelos: maior vazão através da 
divisão da carga entre os processadores.
• Tarefas que podem ser melhor aceleradas são as que podem 
ser particionadas em subtarefas com pouca comunicação.
• Ex.:Muitas operações sobre vetores e matrizes, comuns em 
aplicações científicas.
• Máquinas paralelas foram objeto de pesquisa teórica e de 
sistemas em 1980, entretanto não se provaram 
economicamente viáveis na época.
• Poucas aplicações populares tiravam vantagem de paralelismo.
• Aumento da capacidade de processamento de PCs.
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.
• Processamento de arrays e matrizes.
• 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
• Paradigmas de programação para sistemas paralelos tem 
uma forte correspondência com políticas de acesso à 
memória em multiprocessadores.
• Diferença fundamental: uso de memória compartilhada 
ou programação usando troca de mensagens.
• Memória compartilhada: cada processador tem acesso 
total à memória compartilhada; comunicação entre 
processos se dá através da memória (acesso 
concorrente necessita sincronização explícita).
• Troca de mensagens: comunicação entre 
processadores feita de forma explícita através de 
comandos send e receive.
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).
• Paradigma de programação (memória compartilhada ou troca de 
mensagem) nem sempre corresponde à organização de memória do 
sistema alvo.
• Troca de mensagem pode ser usada tanto em arquiteturas de memória 
compartilhada quanto de troca de mensagens.
• Em memória compartilhada, uma troca de mensagem pode ser 
implementada como uma simples cópia de memória.
• Memória compartilhada distribuída pode ser emulada através de uma 
camada de software adicional em arquitetura de troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Modelos	PRAMe	 LogP
• Modelos para projeto e análise de complexidade de 
algoritmos paralelos.
• Descrever/projetar algoritmos independente da máquina 
utilizada
• Modelos que abstraem detalhes
• Foco em aspectos importantes 
• Esconde detalhes “desnecessários”
• Modelos podem ser simulados
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Modelos	PRAMe	 LogP
• PRAM – Parallel Random Access Machine
• Máquina ideal com memória centralizada e 
compartilhada, processadores síncronos.
• Acesso a uma célula: admite modelar acesso exclusivo 
ou concorrente.
• Células diferentes podem ser acessadas 
concorrentemente.
• Simples, porém não considera custos de comunicação 
entre processadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Modelos	PRAMe	 LogP
• Modelo PRAM irreal, especialmente em sistemas distribuídos, 
devido à suposição de comunicação sem custo entre 
processadores.
• LogP
• Considera custo de comunicação entre processadores.
• L: limite superior no atraso em uma troca de mensagem.
• o: overhead – tempo que um processador gasta enviando ou 
recebendo uma mensagem, durante o qual não efetua outra 
operação.
• g: Gap – tempo mínimo entre transmissões ou recepções 
consecutivas de mensagens (1/BW).
• Limita número de mensagens simultâneas a
• Modelo assíncrono.
• Fig 13 + exemplo
⇠
L
g
⇡
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Modelos	PRAMe	 LogP
• Sugestão de melhoria no desempenho do exemplo?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento,	paralelismo,	
concorrência	e	granularidadeProf. Luiz Fernando Bittencourt IC - UNICAMP
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/computadores 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 fisicamente próximos. Bus (NOW + LAN ou 
Myrinet), ou usando uma rede genérica, processadores podem ser 
heterogêneos. Sistema distribuído (sem memória compartilhada ou 
relógio comum) com característica de sistema paralelo (processadores 
próximos). 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 de um programa em uma dada 
máquina específica.
• Depende do número de processadores e 
mapeamento do código nesses processadores.
• Razão entre o tempo de execução 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, seja por memória compartilhada 
ou troca de mensagens.
• Se a medida agregada é somente em função do código, 
paralelismo é independente de arquitetura.
• Caso contrário, definição de paralelismo se assemelha à de 
speedup.
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
Paralelismo	vs.	Concorrência
• Paralelismo: condição que aparece quando pelo menos duas 
threads estão executando simultaneamente.
• Concorrência: condição existente quando pelo menos duas 
threads estão progredindo. 
• Paralelismo: programação para execução de computação 
simultânea (possivelmente relacionada).
• Concorrência: programação como composição de processos 
(no termo amplo) executando independentemente.
• Paralelismo: quando tarefas executam ao mesmo tempo.
• Concorrência: quando tarefas podem começar, executar, e 
terminar em intervalos de tempo sobrepostos. Não significa 
necessariamente que executarão ao mesmo tempo (e.g., 
multitasking em processadores de núcleo único).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Problema: mover uma pilha de manuais de linguagens obsoletas 
para uma fornalha.
• Apenas 1 roedor demora muito.
• http://concur.rspace.googlecode.com/hg/talk/concur.html
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Mais roedores.
• Não ajuda, precisamos de mais carrinhos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Mais roedores e mais carrinhos.
• Mais rápido, mas há gargalos na pilha e na fornalha.
• Necessidade de sincronizar os roedores: uma mensagem 
(comunicação entre roedores) pode resolver.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Dobrar tudo
• Remover gargalo, tornando-os independentes.
• Consome entrada duas vezes mais rápido.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Projeto não é automaticamente paralelo.
• E se somente um roedor move-se em um dado instante de 
tempo?
• Continua sendo concorrente (i.e., o projeto), mas não paralelo.
• Entretanto, é automaticamente paralelizável.
• Essa composição concorrente habilita outros modelos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Outro projeto.
• Três roedores em ação, mas provavelmente com atrasos.
• Cada roedores é um procedimento independente, mais a 
coordenação (comunicação).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Adicionar novo roedor para carregar os carrinhos vazios.
• Organizando tudo corretamente (não trivial), é quatro vezes 
mais rápido que o projeto original de 1 roedor.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Quatro procedimentos distintos:
• Carregar manuais no carrinho
• Mover carrinho até a fornalha
• Descarregar carrinho na fornalha
• Retornar o carrinho vazio
• Diferentes projetos concorrentes permitem diferentes 
maneiras de paralelização.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Mais paralelização:
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Ou nenhuma paralelização (se cada um trabalha em determinado 
intervalo de tempo diferente dos outros), mas continua sendo uma 
solução concorrente.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Outro projeto
• Pilha adicional
• 100 pilhas: melhora?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Paralelizando da maneira usual
• Executar mais procedimentos concorrentes para aumentar vazão
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Ou ainda...
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Usando todas as técnicas: 16 geomídeos trabalhando.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo	vs.	Concorrência
• Existem muitas formas de quebrar um processo em pedaços 
menores: projeto concorrente.
• Paralelização pode ser implementada de forma que sua 
corretude é “fácil”.
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.
• Granularidade alta (baixa): relativamente mais (menos) 
instruções produtivas de CPU comparadas ao número de 
vezes que os processadores comunicam-se.
• Baixa granularidade: se encaixa melhor em sistemas 
fortemente acoplados.
• Latência pode degradar vazão.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas	de	troca	de	mensagem	
versus	sistemas	de	memória	
compartilhada
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Troca	de	mensagens	e	
memória compartilhada
• Sistemas de memória compartilhada: espaço de endereço 
comum compartilhado no sistema.
• Comunicação se dá através de variáveis compartilhadas
• Variáveis de controle para sincronização entre processadores 
(semáforos, monitores).
• Sistemas de multicomputadores que não têm espaço de 
endereçamento comum fornecido pela arquitetura/hardware 
necessariamente comunicam-se por troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Troca	de	mensagens	e	
memória compartilhada
• Conceitualmente mais fácil programar/depurar memória 
compartilhada que troca de mensagens.
• A abstração chamada “memória compartilhada” é algumas 
vezes utilizada para simular um espaço de endereçamento 
comum.
• Em sistema distribuído: memória compartilhada distribuída.
• Implementá-la tem certo custo, mas simplifica tarefa de 
programação.
• Comunicação por troca de mensagem pode ser simulada por 
comunicação via memória compartilhada (e vice-versa).
• Os dois paradigmas são equivalentes.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
TM	àMC
• Emular troca de mensagem em sistema de memória 
compartilhada (TM à MC).
• Espaço de endereçamento compartilhado pode ser 
particionado em conjuntos disjuntos, com uma parte para 
cada processador.• Operações send e receive podem ser implementadas pela 
escrita e leitura do espaço de endereçamento do 
destinatário/remetente.
• Especificamente, um espaço separado pode ser reservado 
como “caixa de correio”.
• Uma troca de mensagem Pi-Pj pode ser emulada por uma 
escrita de Pi na caixa de correio, e então uma leitura de Pj.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
TM	àMC
• No caso mais simples, assume-se que essas caixas de 
correio têm tamanho ilimitado.
• As operação de escrita/leitura precisam ser controladas 
utilizando primitivas de sincronização para informar 
destinatário/remetente após o envio/recebimento dos 
dados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MC	àTM
• Emular memória compartilhada em sistema de troca de 
mensagem (MC à TM).
• Envolve o uso de operações de send e receive para realizar 
operações de escrita e leitura.
• Cada local compartilhado pode ser modelado como um 
processo separado.
• A escrita em um local compartilhado é emulada pelo envio 
de uma mensagem de atualização para o processo dono 
daquele espaço.
• A leitura de um local compartilhado é emulada pelo envio 
de uma mensagem de query para o dono do processo.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MC	àTM
• Acessar memória de outro processador é caro (requer 
send/receive).
• Emular memória compartilhada pode ser atraente do 
ponto de vista do programador, mas deve ser considerado 
que é apenas uma abstração em sistemas distribuídos.
• Latências envolvidas nas operações de leitura/escrita 
podem ser altas mesmo usando emulação de memória 
compartilhada, pois, por baixo dos panos, ocorre 
comunicação através de uma rede.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Troca	de	mensagens	e	
memória	compartilhada
• Aplicações podem combinar memória compartilhada e troca de 
mensagens.
• Em um multicomputador MIMD, cada “processador” pode ser 
por si só um sistema multiprocessado fortemente acoplado com 
memória compartilhada.
• No sistema multiprocessado, processadores comunicam-se via 
memória compartilhada.
• No sistema de multicomputadores, comunicam-se via troca de 
mensagens.
• Sistemas de troca de mensagem são mais comuns e mais 
adequados para sistemas distribuídos amplos, e portanto mais 
extensivamente estudados em sistemas distribuídos.

Continue navegando