05/08
Apresentação do Curso
Introdução: Motivação e Problemas
referência: MOS, 9.4
07/08
Comunicação em Sistemas Distribuídos
Protocolos de Comunicação
- necessidade de definição de protocolos
- camadas de protocolos
- serviços: confiabilidade, ordenação, conexão, ...
- sistemas abertos e padronização
- OSI
- TCP/IP
- desvantagem: custo de desempenho
O modelo de troca de mensagens
Primitivas de Comunicação: envio e recebimento
- envio com e sem bloqueio
- relação com envio com e sem bufferização
- recebimento com e sem bloqueio
- dificuldade de tratar recebimento assíncrono em programas convencionais
- relação com programação baseada em eventos
referência: MOS, 10.1,
10.2.4-10.2.6
12/08
Comunicação em Sistemas Distribuídos (cont)
O modelo de troca de mensagens (cont)
Endereçamento de Processos
- endereços de processos
- servidores de nomes
- uso de caixas de correio
- exemplo: portas no modelo TCP/IP
O problema de sincronização entre emissor e receptor
- necessidade de um modelo de comunicação entre processos
O Modelo Cliente-Servidor
- funcionamento básico
- servidores concorrentes e iterativos
Disparo de novos processos no ambiente UNIX
referência: MOS,
10.2.3, 10.2.1
14/08
não houve aula!
19/08
Comunicação em Sistemas Distribuídos (cont)
Comunicação entre Processos no BSD UNIX (sockets)
- modelo de funcionamento
- semelhança com arquivos
Uso de Chamadas no Modelo Cliente-Servidor
- Servidor com Conexão
- Servidor sem Conexão
Chamadas Básicas
- socket
- connect
- bind
- accept
- read, write, receive, send, etc
- close
referência:
Stevens,
cap. 6.
21/08
Comunicação em Sistemas Distribuídos (cont)
O Modelo de Chamada Remota de Procedimento
- abstração da troca de mensagens típica em
iterações cliente servidor: chamada de procedimento
- oferecimento de um modelo de programação análogo
ao usado em programação sequencial
- implementação: stubs
- passagem de parâmetros
- representação externa de dados
- marshalling e unmarshalling
- passagem de referências - como tratar?
- semântica de falhas
- pelo menos uma vez
- no máximo uma vez
- nada garantido
- exatamente uma vez
- implementação: stubs
referência: MOS,
10.3.1, 10.3.2, 10.3.4.
26/08
Comunicação em Sistemas Distribuídos (cont)
Chamada Remota de Procedimento (cont) - um exemplo
Sun RPC
- organização do sistema:
- protocolo
- biblioteca
- compilador
- formato padrão para dados
- exemplo de uso
referência: Comer,
Stevens.
Comunicação em Grupo
referência: MOS 10.4.1, 10.4.2.
28/08
Sincronização em Sistemas Distribuídos
Sincronização de Relógios
- Problemas: tempos variáveis de transmissão de mensagens
Sincronização de Relógios Físicos
- algoritmos centralizados
- algoritmos distribuídos
referência: MOS 11.1.3.
2/09
Sincronização em Sistemas Distribuídos (cont.)
Sincronização de Relógios (cont.)
Relógios Lógicos
- A idéia de precedência de eventos
- o algoritmo de Lamport
Exclusão Mútua
- algoritmo centralizado
- algoritmo distribuído
referência: MOS 11.1.1, 11.2.1, 11.2.2.
4/09
não houve aula
9/09
Sincronização em Sistemas Distribuídos (cont.)
Exclusão Mútua (cont)
- algoritmo em anel
- comparação entre os diferentes algoritmos de exclusão mútua
Algoritmos de Eleição
- algoritmo de bully
- algoritmo em anel
referência: MOS, 11.2.3, 11.2.4, 11.3.1, 11.3.2.
11/09
Sincronização em Sistemas Distribuídos (cont.)
Transações
propriedades: serialização, atomicidade, permanência
Permanência: implementação em ambientes centralizados
- shadow pages
- writeahead log
Permanência: implementação em ambientes distribuídos
Serialização: implementação em ambientes distribuídos
- uso de locks
- controle otimista
referência: MOS, 11.4.1, 11.4.2, 11.4.3, 11.4.4
referência suplementar: Silberschatz, 18.3.
16/09
Deadlocks
Caracterização
Tratamento
- ignorar
- detectar
- prevenir dinamicamente - quase sempre inviável
- prevenir estruturalmente
- dificuldades e exemplos
referência: MOS, 6,2, 6.3, 6.4
18/09
Sincronização em Sistemas Distribuídos (cont.)
Deadlocks em sistemas distribuídos
Detecção
- com controle centralizado de recursos
- sem controle centralizado: algoritmos distribuídos
Prevenção Estrutural
- atacando a condição de espera circular: wait or die
- atacando a condição de não preempção: wound or die
referência: MOS, 11.5
23/09
PROVA 1
25/09
Linhas de Controle (threads)
Motivação
- custo de criação menor que processo convencional
- possibilidade de compartilhamento de dados
- estruturação de aplicação em várias linhas de controle
- em conjunto com distribuição, aumento do aproveitamento da CPU
Implementação
- como parte do núcleo do sistema operacional
- como biblioteca
Exemplo Java
referência: MOS, 12.1
30/09
Modelos de Gerência de Processadores
- o modelo de estações de trabalho
- o modelo de banco de processadores
referência: MOS, 12.2
2/10
Compartilhamento e Balanceamento de Carga
Algoritmos
- estáticos X dinâmicos
- exatos X heurísticos
Algoritmos Dinâmicos
- informação necessária?
- forma de difusão da informação
- controle da decisão de alocação
referência: MOS, 12.3
7/10
Sistemas de Arquivos Distribuídos
exemplo 1: NFS
referência: MOS, 9.3.1
revisão da P1
9/10
Sistemas de Arquivos Distribuídos (cont)
exemplo 2: Andrew
referência: MOS, 13.1.2, 13.2.3, 13.2.5
14/10
Segurança em Sistemas Distribuídos
- Principais problemas
- Técnicas Básicas: criptografia e autenticação
- Criptografia de chave secreta
- Criptografia de chave pública e privada
referência: Stallings, 629-632
16/10
Segurança em Sistemas Distribuídos
Distribuição de Chaves Secretas
- problema de confidencialidade da chave
- meios possíveis: distribuição offline, uso de outra chave, uso de um intermediário confiável
- KDC (Key Distribution Center) como intermediário confiável
Distribuição de Chaves Públicas
- problema da autenticidade da chave
- uso de KDCs
- uso de autoridades de cerificação
referência: Stallings, 621-624
21/10
Autenticação em Sistemas Distribuídos
Autenticação baseada em endereços e senhas
Protocolos de autenticação e falhas comuns
- autenticação unilateral e bilateral
- autenticação com chave secreta e com chave pública e secreta
- ataques comuns: replay, reflexão
23/10
Autenticação em Sistemas Distribuídos: o exemplo do Kerberos
28/10
entrega do trabalho 2
30/10
não houve aula
4/11
Discussão do Trabalho 3
6/11
não houve aula
11/11
Exemplo de SO Distribuído: Amoeba
- pool de processadores
- ausência de paginação
- arquitetura de microkernel
- uso de capabilities
- comunicação por RPC com uso de portas
- comunicação de grupo
referência: MOS, 14.1.3, 14.1.4, 14.2, 14.5
13/11
Exemplo de SO Distribuído: Mach
referência: MOS, 15.1.3,
15.2.3, 15.3, 15.3.1.
Last update: Mon Nov 17 14:53:42 EDT 1997
by Noemi