![Page 1: aula03 - Instituto de Computaçãobit/mc714/aulas/aula03.pdf · Prof. Luiz Fernando Bittencourt IC -UNICAMP MC714 Sistemas Distribuídos 2°semestre, 2018](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022060502/5f1c1accf718602bff5d7769/html5/thumbnails/44.jpg)
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.