Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 04 Conceitos - Tópicos Processos e Threads Concorrência Sistemas Abertos Comunicação Sincronização Tolerância a Falhas Segurança Sistemas Distribuídos de TempoReal Sistemas Distribuídos Abertos Um sistema aberto é aquele que se comunica com outro sistema aberto usando regras que tratam do formato, conteúdo e significado das mensagens enviadas e recebidas. As regras são formalizadas como protocolos. Interfaces publicadas Facilitam propriedades como escalabilidade flexibilidade Comunicação Os componentes distribuídos (lógica e fisicamente) de um sistema devem se comunicar para interagir Transferência de dados Sincronização Comunicação (cont.) Passagem de mensagem Primitivas send e receive Abstrações: canal e porta p1 p2 Síncrona (blocking) Assíncrona (non-blocking) Comunicação (cont.) Modelos de comunicação Cliente-Servidor Grupo Comunicação em Grupo Grupo fechado x grupo aberto Comunicação em Grupo (cont.) Peer group x grupo hierárquico coordenador trabalhador Comunicação em Grupo (cont.) Endereçamento Multicasting (Ex. TV a cabo) Broadcasting (Ex. TV) Unicasting 0 1 2 3 0 1 2 3 0 1 2 3 Comunicação em Grupo (cont.) Primitivas de comunicação group_send Atomicidade Atomic e group_receive broadcast (tudo-ou-nada) Ordem de mensagens Garantias que msg “A” chegue em todos os membros do grupo antes de “B” Sincronização Distribuição leva a novas considerações: Ex: como implementar região crítica? semáforos e monitores, como conhecemos, não são apropriados, pois são baseados no compartilhamento de memória Tempo é importante Sincronização (cont.) Em sistemas distribuídos: Informação relevante é espalhada em diferentes máquinas Processos tomam decisões baseados apenas em informação local Não há um relógio comum Sincronização (cont.) Em grande parte dos sistemas, o que importa é a consistência interna dos relógios, e não se eles são próximos do tempo real relógios lógicos se os relógios não podem desviar muito do tempo real, eles são chamados de relógios físicos Sincronização (cont.) Algoritmo de Lamport para sincronização de relógios lógicos (Relação aconteceu-antes) 0 0 6 12 18 24 30 36 42 48 54 60 1 A D 2 0 8 16 24 B 32 40 C 48 56 64 72 80 0 0 10 20 30 40 50 60 70 80 90 100 0 6 12 18 24 30 36 42 48 70 76 1 A D 2 0 8 16 24 B 32 40 C 48 61 69 77 85 0 10 20 30 40 50 60 70 80 90 100 Sincronização (cont.) Transações Atômicas A 100 0 100 C 0 100 150 0 B 300 250 50 D 150 0 150 Sincronização (cont.) Propriedades das Transações Atômicas Atomicidade: tudo-ou-nada Consistência: uma transação leva o sistema de um estado consistente a outro estado consistente Isolamento: transações concorrentes não interferem umas nas outras Duração: terminada uma transação, as mudanças são permanentes Sincronização (cont.) Multimídia Mídias contínuas Sincronização intra-stream Áudio: 8000 amostras/seg Vídeo: 30 quadros/seg Sincronização inter-stream Ex: lip-sync Compensação de atraso buffering descarta chegada atrasada Segurança Criptografia C = E(P,KE) e P = D(C,KD) C: texto criptografado E: função de criptografia P: texto original KE: chave de criptografia D: função de decriptografia KD: chave de decriptografia Autenticação Tolerância a Falhas Ex: sistema de fornecedores de supermercado se fornecedor de produto “X” falhar? Tipos de falha Transiente: pode acontecer uma vez Intermitente: acontece de tempos em tempos Permanente: acontece sempre Tolerância a Falhas (cont.) Técnicas Redundância de hardware Replicação de componentes de software e de dados Tolerância por software: algoritmos Sistemas de Tempo-Real Em sistemas de tempo-real, não cumprir uma condição dependente de tempo é uma falha Tipos de sistemas de tempo-real pode “falhar” ocasionalmente Hard: perder um deadline é inaceitável Soft: Sistemas de Tempo-Real (cont.) Mitos: Computação em tempo-real é computação rápida Em alguns casos, o que importa é a precisão Ex: algumas estrelas só podem ser observadas a cada 1/2 hora, precisamente (o sistema tem tempo suficiente para iniciar a observação no momento exato) Sistemas de Tempo-Real (cont.) Mitos (cont.): Computadores rápidos fazem sistemas de tempo-real obsoletos Ao contrário, os sistemas de tempo-real são encorajadores, permitindo atender novas demandas Sistemas de Tempo-Real (cont.) Projeto - algumas considerações: Sincronização de relógios Sistemas event-triggered x timetriggered Previsibilidade