Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 4 - 17/8/2001
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 5755
Página do Fabio
Página do DCC