Notas de Aula - MAC 449/5755 - Sistemas Operacionais Distribuídos
Aula 3 - 20/08/2003
Introdução a Sistemas Distribuídos
Referência: Cap 1 do Livro Distributed Operating Systems do
Tanenbaum.
- Existem muitas definições diferentes para SDs e para
SODs. Por exemplo:
- Tanenbaum: Um sistema distribuído é uma coleção
de máquinas independentes que, para os seus usuários, se parece
com um único computador.
- Silberschatz (e outros):
- Sistemas Operacionais de redes: os úsuarios sabem
da existência de várias máquinas, podem abrir sessões
em várias máquinas e transferir dados entre elas.
- Sistemas Operacionais distribuídos: os usuários
não precisam saber da existência de várias máquinas,
os recursos remotos são usados da mesma forma que os recursos locais.
- Vantagens de Sistemas Distribuídos em relção
a Sistemas Centralizados:
- Preço: 10 máquinas de x MHz é mais barato que
1 máquina de 10x MHz
- Velocidade: é possível construir sistemas com valor
agregado muito maior
- Distribuição física: algumas aplicações
são essencialmente distribuídas (e.g., correio eletrônico)
- Confiabilidade: se uma máquina quebra, outras podem guardar
backup
- Disponibilidade: se uma máquina sai do ar (ou melhor, do fio),
pode-se usar outra
- Crescimento incremental: podemos acrescentar (ou retirar) recursos
aos poucos
- Desvantagens de Sistemas Distribuídos em relação
a Sistemas Centralizados:
- Software: ainda não está tão maduro quanto o software
para sistemas centralizados
- Rede: ela pode cair, pode ficar saturada, congestionar
- Segurança: roubo de dados, ataques de negação
de serviço
- Sistemas Paralelos (não é a ênfase deste curso)
- Cada processador com sua própria memória (multicomputadores)
menos comum
- Sistemas de Memória Compartilhada (multiprocessadores) mais
comum
- barramento
- switches (como um reticulado)
- hipercubo (dois processadores são ligados se o seu número
só difere em 1 bit) (exemplo com 3 bits)
- memória cache em cada processador
- área ativa de pesquisa: políticas de consistência
de cache (mas já deu o que tinha que dar :-)
- tamanhos típicos: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
processadores
- Para maiores informações: cursos de computação
paralela e de alto desempenho
- Sistemas Distribuídos (a ênfase deste curso)
- máquinas independentes conectadas por redes (e.g., modem+linha
telefônica, linha serial, infravermelho, Ethernet, Fast Ethernet, FDDI,
ATM, rede IEEE 802.11 sem fio, Internet pública, etc.)
- Questões importantes no Desenho de Sistemas Distribuídos
- Transparência
- de localização
- de migração
- de replicação
- de concorrência (compartilhamento simultâneo de recursos)
- de paralelismo (atividades executadas em paralelo)
- Flexibilidade
- não sabemos ainda construir sistemas distribuídos, então
é bom que eles sejam flexíveis de modo que possamos reconfigurá-los
quando fazemos algo errado
- os requisitos mudam (sempre), nada no mundo é estático
- núcleo monolítico vs. micronúcleo
- Desempenho
- Normalmente é sinônimo de velocidade
- Várias coisas a se medir
- tempo de resposta
- velocidade de processamento (throughput)
- utilização dos processadores
- parcela da rede utilizada
- Confiabilidade / Tolerância a Falhas:
- Disponibilidade
- Evita perda de dados em caso de falha de uma máquina
- Mecanismo mais comum: replicação
- Escalabilidade
- se um protocolo funciona para 10 ou 100 máquinas é pouco
provável que vá funcionar para 10K ou 100K máquinas.
Exceção histórica: Simple Mail Transfer Protocol
(SMTP)
- Como desenhar algoritmos escaláveis?
- nenhuma máquina deve conter toda a informação
sobre o sistema
- máquinas tomam decisões baseadas em informações
locais
- a falha de uma máquina não inviabiliza todo o algoritmo
- não se deve assumir a existência de um relógio
global
Próxima Aula
Aula Anterior
Página de MAC 449/5755
Página do Fabio
Página do DCC