aula03 - instituto de computaçãobit/mc714/aulas/aula03.pdf · prof. luiz fernando bittencourt ic...

44
Prof. Luiz Fernando Bittencourt IC - UNICAMP MC714 Sistemas Distribuídos 2° semestre, 2018

Upload: others

Post on 04-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

MC714Sistemas Distribuídos2° semestre, 2018

Page 2: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Sistemasdetrocademensagemversussistemasdememóriacompartilhada

Page 3: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Trocademensagensememó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.

Page 4: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Trocademensagensememó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.

Page 5: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 6: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 7: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 8: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 9: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Trocademensagensememóriacompartilhada• 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.

Page 10: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Primitivasparacomunicaçãodistribuída

Page 11: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Primitivas• Primitivas de troca de mensagens: send() e

receive()• 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.

Page 12: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Primitivas• Há duas maneiras de enviar dados quando a primitiva

send é invocada: com buffer ou sem buffer.

• Com buffer: copia os dados do espaço do usuário para

um buffer do kernel. Depois, dados são copiados do

buffer para a rede.

• Sem buffer: dados são copiados diretamente do

espaço do usuário para a rede.

• Para receive: geralmente com buffer porque dados

podem já ter chegado quando a primitiva é invocada,

precisando de um espaço temporário no kernel.

Page 13: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Síncrona/assíncrona• Primitiva síncrona• Primitivas send() e receive() são síncronas se fazem handshake.• Processamento do send só termina depois que receive

correspondente foi invocado e a operação de recebimento foi terminada.

• Receive termina somente quando dados copiados ao buffer de recepção do usuário.

• Primitiva assíncrona• Primitiva send é assíncrona se controle retorna ao processo

depois dos dados serem copiados para fora do buffer do usuário.• Não há sentido em definir uma primitiva receive assíncrona.

Page 14: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Primitiva bloqueante

• Controle retorna ao processo após o processamento da primitiva (síncrona ou assíncrona) ser completado.

• 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 processo 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.

Page 15: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Para primitivas não bloqueantes, parâmetro de retorno é

um handle que pode ser usado para verificar o estado da chamada.

• Pode ser feito de duas formas:• Verificar através de um loop ou periodicamente, verificando se o

handle foi “resolvido” (posted)

• Disparar um Wait com handles como parâmetro. Geralmente bloqueia (blocking wait) até que um dos handles seja resolvido (posted).

Page 16: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Primitiva send não bloqueante

Send(X, destino, handle_k);......

Wait(handle_1, handle_2, ..., handle_k, ..., handle_m);

• Se quando Wait é invocado o processamento da primitiva já completou, o Wait retorna imediatamente. Caso contrário, Waitbloqueia e aguarda um sinal para “acordar”.

• Quando a primitiva completa, o subsistema de software de comunicação seta o valor de handle_k e “acorda” qualquer processo com um Wait bloqueado por esse handle.

Page 17: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Quatro versões da primitiva send:• Síncrona bloqueante• Síncrona não bloqueante• Assíncrona bloqueante• Assíncrona não bloqueante

• Duas versões da primitiva receive:• Síncrona bloqueante• Síncrona não bloqueante

Page 18: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Send síncrono bloqueante

• Dado é copiado do buffer do usuário para o buffer do

kernel e enviado pela rede.

• Depois que o dado é copiado no buffer do destinatário e

uma chamada receive foi feita, uma confirmação enviada

de volta ao remetente faz com que o controle retorne ao

processo que invocou a primitiva send, completando-a.

• Fig 14(a)

Page 19: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Send síncrono não bloqueante• Controle retorna ao invocador assim que inicia-se cópia

dos dados para o kernel.• Parâmetro na chamada não bloqueante recebe o handle

para posterior verificação do estado do send síncrono.

• Notificação é postada após a confirmação retornar do destinatário.• Processo de usuário pode verificar se send síncrono não

bloqueante completou através de testes sobre o handleou utilizando operações Wait em tal handle.

• Fig 14(b)

Page 20: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Send assíncrono bloqueante

• Processo de usuário invoca send

• Fica bloqueado até dados serem copiados ao buffer do kernel

• Em versão sem buffer: fica bloqueado até o dado ser copiado para a rede.

• Fig 14(c).

Page 21: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Send assíncrono não bloqueante

• Processo de usuário invoca Send.

• Fica bloqueado até iniciar-se a cópia dos dados para o buffer do

kernel (ou rede, se não utiliza buffer).

• Controle retorna ao processo assim que transferência é iniciada;

handle é configurado.

• Processo de usuário pode verificar se send assíncrono não

bloqueante completou através de testes sobre o handle ou

utilizando operações Wait em tal handle.

• Send assíncrono termina quando os dados foram copiados para fora

do buffer do usuário.

• Verificação de término pode ser necessária se usuário quer reutilizar

buffer.

• Fig 14(d).

Page 22: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Receive bloqueante• Chamada receive bloqueia até que dados sejam

recebidos e escritos no buffer do usuário. • Controle é retornado ao processo do usuário.

• Fig 14(a).

Page 23: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Bloqueante/nãobloqueante• Receive não bloqueante• Chamada receive é registrada pelo kernel e retorna um

handle para verificação posterior do término da operação de receive não bloqueante.• Handle é resolvido (posted) após o recebimento dos dados,

que são copiados para o buffer especificado pelo usuário.• Processo do usuário pode verificar término do receive não

bloqueante invocando operação de Wait sobre o handle.• Se o dado já chegou quando a chamada é feita, estará pendente

num buffer do kernel e precisa ser copiada para o buffer do usuário.

• Fig 14(b).

Page 24: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Características• Send síncrono: mais fácil de usar da perspectiva do

programador• Handshake entre send e receive faz comunicação

parecer “instantânea”• Simplifica a lógica do programa, mas pode diminuir

eficiência do processo remetente (remetente tem que esperar).• Receive pode não ser chamado até muito depois dos

dados terem chegado ao buffer receptor; send fica bloqueado até receive ser chamado.

Page 25: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Características• Send não bloqueante assíncrono é útil para dados maiores.

• Permite que outras operações sejam feitas

concorrentemente com a operação de send.

• 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.

Page 26: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Sincronismodeprocessador• Outro nível de sincronismo, em oposição ao sincronismo de

primitivas de comunicação• Sincronismo de processadores:• Processadores executam em passos “travados” com seus relógios

sincronizados• Não alcançável em sistemas distribuídos.• Em sistemas distribuídos, sincronização pode ser implementada

em nível mais alto• Sincronização em “passos” • Alguma forma de barreira de sincronização para garantir que um

processador não inicie o próximo passo em um código até que todos os processadores tenham completado os passos anteriores que lhes foram atribuídos.

Page 27: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Sincronismodeexecução• Outra classificação no nível de sincronismo

• Execução assíncrona é uma execução onde:

• Não há 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

Page 28: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Sincronismodeexecução• Execução síncrona

• Processadores sincronizados

• Divergência de relógios limitada

• Envio + entrega de mensagens: ocorre em um passo lógico

• Há tempo limite para um processo executar um passo

• Fig 17

Page 29: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Sincronismodeexecução• É mais fácil projetar e verificar algoritmos assumindo execução

síncrona

• Natureza coordenada da execução facilita essas tarefas

• Entretanto, na prática é difícil obter um sistema completamente

síncrono e ter mensagens entregues dentro de um limite de

tempo determinado.

• Sincronismo precisa ser simulado

• Envolve atrasar ou bloquear processos por algum tempo

• Então, sincronismo é uma abstração que pode ser fornecida aos

programas.

• Quanto menor o número de passos, ou sincronizações, dos

processadores, menores são atrasos e custos.

Page 30: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Sincronismodeexecução• Idealmente, programas querem que processos executem

uma série de instruções em cada passo (ou fase) de forma assíncrona e, após cada passo/fase todos os processos devem ser sincronizados e todas as mensagens enviadas devem ser entregues.• Entendimento padrão de execução síncrona.

Page 31: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Emulação• Sistema assíncrono sobre um sistema síncrono (AàS)

• Sistema síncrono: caso especial do assíncrono

• Programa escrito para sistema assíncrono pode ser emulado trivialmente em um sistema síncrono onde toda comunicação termina dentro de uma mesma fase na qual ela foi iniciada

• Sistema síncrono sobre um sistema assíncrono (SàA)

• Programa escrito para sistema síncrono pode ser emulado em sistema assíncrono usando uma ferramenta chamada sincronizador.

Page 32: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Emulação• Vimos que 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

Page 33: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 34: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Desafios

Page 35: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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/aplicações recentes

Page 36: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 37: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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

Page 38: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 39: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 40: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 41: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 42: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

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.

Page 43: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Desafios- Aplicaçõeseavançosrecentes• Sistemas móveis: meio de broadcast compartilhado; 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.

Page 44: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018

Prof. Luiz Fernando Bittencourt IC - UNICAMP

Desafios- Aplicaçõeseavançosrecentes• 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.