1 / 22

Sistemas Distribuídos

Sistemas Distribuídos. Walfredo Cirne. Aula 4: Mais Conceitos Básicos As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o consentimento dos mesmos. Sincronia. O que significa sincronia? envio de mensagens blocking  non-blocking

benita
Download Presentation

Sistemas Distribuídos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sistemas Distribuídos Walfredo Cirne Aula 4: Mais Conceitos Básicos As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o consentimento dos mesmos.

  2. Sincronia • O que significa sincronia? • envio de mensagens blocking  non-blocking • iteração same-time  different-time • hardware clock-driven • limite superior para execução de ações (processamento e troca de mensagens)

  3. Graus de Sincronia • Assíncrono • sem limites de tempo para ações • Síncrono • ações têm limites de tempo conhecidos • Parcialmente síncrono • ações têm limites de tempo para acontecer, mas estes são desconhecidos e/ou válidos somente parte do tempo

  4. Qual a gente escolhe? • Assíncrono • fácil de implementar, mas pouco útil • Síncrono • muito poderoso, mas conflita com escala, abertura, interatividade, bom uso dos recursos • usado em sistemas embarcados • Parcialmente síncrono • muito usado em computação de uso geral • semântica tipicamente não é claramente definida

  5. Coordenação: Relembrando Exclusão Mútua • Semáforo S: variável não-negativa inteira que só pode se modificada pelos procedimentos up() e down() • down(S)se S > 0: decremente Ssenão: bloqueia esperando up(S) • up(S)se há alguém bloqueado: desbloqueie senão: incremente S

  6. thread P1; • statement X • down(mutex); • statement Y • up(mutex); • statement Z • end P1; • thread P2; • statement A; • down(mutex); • statement B; • up(mutex); • statement C; • end P2; Usando Semáforos (* exclusão mútua *) var mutex: semaphore := 1;

  7. Exclusão Mútua via Servidor de Lock • Necessário para coordenar processos e evitar “colisões” • Servidor de lock • Interessados em entrar na região crítica mandam mensagem LOCK para o servidor • O servidor só responde com LOCK-GRANTED para um processo • Processo envia UNLOCK ao sair da região • Servidor é ponto único de falhas e possível gargalo de performance • Falha no cliente também é problema

  8. Exclusão Mútua via Servidor de Lock

  9. Exclusão Mútua Distribuída • Usando um protocolo que garante entrega ordenada total, podemos replicar o servidor de lock em todos os processos do sistema • Podemos também eleger dinamicamente um líder para função de servidor de lock • Precisamos também pensar em como passar estado entre lideres, ou então resetar o sistema quando há troca de líder

  10. Exclusão Mútua Distribuída

  11. Eleição de Líder • Note a necessidade de sincronia para detecção da falha do líder!!

  12. Deadlock • Deadlock ocorre quando um processo fica esperando por outro • Para deadlock é necessário ter exclusão mútua, obtém-e-espera, não-preempção, espera circular • Tudo que você conhece deadlock em sistemas concorrentes vale para sistemas distribuídos, com a complicação que você não tem uma visão global do sistema

  13. Consistência • Como garantir que alguma propriedade sistêmica é válida? • Ou seja, como garantir que (ou checar se) a execução do sistema é consistente? • Para checar, podemos parar o sistema e montar um estado global • Naturalmente, isso é dispendioso • Protocolos de snapshot distribuído são uma solução bem mais eficiente para o problema

  14. Consenso • Problema básico para coordenação de processos • No consenso, cada processo p propõe um valor vp e decide por um valor final fp • As propriedades de consenso são: • Acordo:  p,q que decidem: fp = fq • Validade:  p: fp = vp • Terminação: Todo processo correto decide em algum momento no futuro;

  15. Consenso em um Sistema sem Falhas

  16. Concorrência • “A good understanding of the memory consistency model is paramount to building correct programs” • Consistência atômica • todos os acessos são a mesma memória • Consistência seqüencial • equivalente a consistência atômica de alguma execução • indistinguível da consistência atômica se comunicação é somente via memória

  17. Modelo de Memória de Java • Cada thread de Java tem memória local • Dados inexistentes na memória local são copiados da memória global • Eventualmente, dados gravados na memória local são refletidos na memória global • Ao entrar num synchronized, todos os dados da memória local são invalidados • Ao sair de um synchronized, todos os dados gravados são refletidos globalmente

  18. Exemplo: Double-Checked Locking class Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) synchronized(this) { if (helper == null) helper = new Helper(); } return helper; } }

  19. Outro Exemplo:Objetos Ativos public class DataRace extends Thread { int a = 0; public DataRace() { this.start(); a = 1; } public void run() { System.out.println(a); } }

  20. Objetos Ativos: O problema é sutil public class DataRace extends Thread { protected int a = 0; public DataRace() { a = 1; this.start(); } } public class ExtendRace extends DataRace { public ExtendRace() { super(); a = 2; } }

  21. Atomicidade: Suporte a Transações • Transações são uma abstração muito poderosa tipicamente implementadas por banco de dados • Transações são ACID • Atomicity: tudo ou nada • Consistency: atualizações levam os dados de um estado consistente para outro estado consistente • Isolation: transações executadas em paralelo não vêem uma a outra • Durability: é um banco de dados, né?

  22. Transações Distribuídas:Two-phase Commit

More Related