4. Mas o que é um SO?
● Interface de usuário para acesso ao hardware
(device driver)
● Fornece diferentes abstrações (processos,
sistema de arquivos, etc...)
● Gerenciamento de recursos (escalonamento)
● Meios de comunicação (rede de comunicação)
...
5. Definição no FOLDOC
● Sistema operacional:
– Software de baixo nível responsável pela interface
de manipulação dos periféricos de hardware,
escalonadores de tarefas, dispositivos de
armazenamento, além de fornecer uma interface
padrão aos usuários quando nenhuma aplicação
está em execução sobre o sistema
FOLDOC=Free On-Line Dictionary of Computing
6. Agora, forneça alguns exemplos de
Sistemas Distribuídos que você
conhece?
● Cliente-servidor NFS
● A Web
● A Internet
● Uma rede sem fio (Wireless)
● DNS
● Gnutella ou BitTorrent (peer-to-peer sobrepostas)
● Uma “cloud”, p. ex. Amazon EC2/S3, Microsoft Azure
● Um datacenter, p. ex. NCSA, Google Datacenter,
PlanetLab
● Sociedade?!
7. O que é um Sistema Distribuído
● Sistema Distribuído:
– Uma coleção (possivelmente heterogênea) de
elementos de processamento (computador,
celular, palm, etc.) cuja distribuição é transparente
p/ o usuário, que tem uma visão única do
sistema, como se fosse uma máquina local. Essa
definição contrasta com a de uma Rede, na qual o
usuário está ciente de que há várias máquinas e
sua localização, armazenamento, replicação,
balanceamento de carga e outras funcionalidades
não estão transparentes. Sistemas distribuídos,
geralmente, utilizam algum tipo de organização
cliente-servidor.
FOLDOC=Free On-Line Dictionary of Computing
8. Definição de autores da área
● Tanenbaum & Van Steen:
– “Um sistema distribuído é um conjunto de
computadores independentes que se apresenta
aos seus usuários como um sistema único e
coerente”
● Coulouris et al.:
– “Um sistema cujos componentes de hardware e
de software embutidos em uma rede de
interligação comunicam-se e coordenam suas
ações por meio do paradigma de troca de
mensagens”
9. Uma definição prática para nós
● Um sistema distribuído é uma coleção de
entidades autônomas, programáveis,
assíncronas e sujeitas a falhas. Comunicam-
se através de uma tecnlogia de transmissão
não confiável.
– Entidade: um processo em um dispositivo (PC,
Celular, Palm, etc.)
– Meio de transmissão: rede com ou sem fio
– Nosso interesse em SDs envolve:
● Projeto e implementação
● Manutenção
● Algoritmos
10. Definição
● Algumas considerações importantes:
– Presença de componentes autônomos
– Usuários e programas têm a impressão de que o
sistema é único
● Componentes precisam colaborar!
● Para suportar computadores e redes
heterogêneas
– Camadas de softwares
● Middlewares
11. Exemplos de SD – domínio Web
● Quem são as
entidades?
● Quais os meios de
comunicação?
12. Exemplos de SD – sistema p2p
Gnutella
● Quem são as entidades?
● Quais os meios de comunicação?
14. Internet – revisão
● É a base de muitos sistemas distribuídos
● Uma vasta coleção de elementos interligados por
diferentes tipos de redes
● Intranets – subredes que operam em uma empresa
ou organização
● Intranets contêm LANs e outras subredes
● WANs consistem de LANs
● ISPs – empresas que fornecem links e outros tipos
de tecnologias para conexão de usuários
● Intranets estão conectadas a backbones – links de
rede de alta velocidade, tais como satélite, fibra,
circuitos com alta largura de banda
16. Um SD está implementado sobre
camadas de rede
Protocolos de SDs Protocolos de Rede
17. O segredo da WWW: padrão HTTP
● HTTP: hypertext transfer protocol
● Protocolo de camada de aplicação
WWW
● Modelo cliente/servidor
– Cli: navegador solicita, recebe
e apresenta objetos WWW
– Srv: servidor WWW armazena
wesite e envia objetos em
resposta as requisições
● HTTP1.0: RFC 1945
● HTTP1.1: RFC 2068
– Aproveita a mesma conexão
para baixar imagens, scripts,
etc...
18. Protocolo HTTP
● HTTP: serviço de transporte
TCP
– Cliente inicia uma conexão
TCP (cria um socket) p/ o
servidor, porta 80
– Servidor aceita a conexão
TCP do cliente
– Mensagens HTTP (msgs
de protocolo da camada de
app trocadas entre
navegador (cliente http) e o
servidor WWW (servidor
http))
– Conexão TCP encerrada
● HTTP é stateless
– Servidor não matém
informações sobre
requisições passadas dos
cliente
● Protocolos que mantém
sessões (estado) são
complexos
– Histórico deve ser mantido
e atualizado
– Se cliente/servidor falhar,
suas visões de “estado”
podem ser inconsistentes,
e devem ser resolvidas
– Protocolos RESTful são
stateless
19. Exemplo HTTP
1a. cliente http inicia
uma conexão TCP c/ o
servidor (processo)
facom.ufms.br na porta
80
2. cliente http envia uma
msg de requisição http
(contendo URL) p/
socket de conexão TCP
1b. servidor http no host
facom.ufms.br aguarda
por uma conexão TCP na
porta 80. Aceita conexões
e notifica cliente
3. servidor http recebe
mensagens de requisição,
monta mensagem de
resposta contendo objetos
solicitados (index.html),
envia mensagem através
do socket
● Considere um usuário acessando a URL:
www.facom.ufms.br Contém texto e
referências a imagens
Tempo
20. Exemplo HTTP (cont.)
5. cliente http recebe
msg de resposta
contendo arq. html,
objetos, etc
6. etapas 1-5 são
repetidas até que
todos os objetos
estejam no cliente
4. servidor http encerra
conexão TCP
Tempo
21. Usuário como um navegador
(lado cliente)
1. Telnet no seu servidor WWW:
2. Entre com uma requisição GET HTTP
telnet facom.ufms.br 80
Abre conexão TCP na porta 80
(porta default do servidor) em facom.ufms.br
Tudo que for digitado é enviado p/ porta 80 no
servidor facom.ufms.br
{
GET /index.html HTTP/1.0
telnet facom.ufms.br 80
Ao digitar esse comando, é encaminhada uma
requisição (mínima, porém completa) HTTP
GET ao servidor
{
3. Observe a mensagem de resposta
encaminhada pelo servidor HTTP!
22. Nossa definição é adequada p/
HTTP WEB?
● Um sistema distribuído é uma coleção de
entidades autônomas, programáveis,
assíncronas e sujeitas a falhas. Comunicam-
se através de uma tecnlogia de transmissão
não confiável.
– Entidade: um processo em um dispositivo (PC,
Celular, Palm, etc.)
– Meio de transmissão: rede com ou sem fio
– Nosso interesse em SDs envolve:
● Projeto e implementação
● Manutenção
● Algoritmos
23. Questões importantes em SD
● Não há relógio global: sem noção global única
de tempo correto (assíncrono)
● Falhas imprevisíveis em componentes: falta
de resposta pode ser devida a falha na rede,
na entidade, etc.
● Largura de banda variável: 16Kbps a Tbps
● Alta variação de latência: poucos ms a
minutos
● Grande quantidade de hosts: de 2 a milhões
24. Há uma série de problemas
interessantes p/ projetistas de SDs
● Sistemas distribuídos de tempo real
– Cloud, p2p, armazenamento chave-valor/NoSQL,
sistemas de arquivos distribuídos, redes de
sensores, ...
● Problemas clássicos
– Detecção de falhas, assincronismo, multicast,
consenso, exclusão mútua, eleição, ...
● Concorrência
– RPCs, controle de concorrência, controle de
replicação, ...
● Segurança
● Outros
25. Arquitetura
● SD permite que componentes de aplicações
comuniquem entre si
● Oculta as diferenças de hardware e tipos de
sistemas operacionais
27. Heterogeneidade
● A Internet permite que usuários acessem
serviços e executem apps sobre uma coleção
de redes e computadores heterogêneos:
– Redes de comunicação
– Hardware dos computadores
– Sistemas operacionais
– Linguagens de programação
– Implementações realizadas por diferentes
desenvolvedores
29. Heterogeneidade
● O middleware permite abstração da programação bem como a
heterogeneidade de redes, SOs e linguagens de programação
– CORBA
– RMI
– Web Services (SOA)
● Código móvel (mobile code)
– Refere-se a programas que podem ser transferidos e executados no
destinatários
● Applets java
– Máquinas virtuais
● Abordagem que permite a execução de código em diferentes
arquiteturas
– p.ex., compilador java gera código para JVM, executa através da
interpretação
– Outro exemplo: inclusão de códigos Javascript em páginas Web
30. Transparência
● Ocultar o fato de que seus processos e
recursos estão fisicamente distribuídos por
vários computadores
Transparência
Transparência Descrição
Descrição
Acesso Oculta diferenças na representação de dados e no modo de acesso a um
recurso
Localização Oculta o lugar em que um recurso está localizado
Migração Oculta que um recurso pode ser movido para outra localização
Relocação Oculta que um recurso pode ser movido para outra localização enquanto
em uso
Replicação Oculta que um recurso é replicado
Concorrência Oculta que um recurso pode ser compartilhado por diversos usuários
concorrentes
Falha Oculta a falha e a recuperação de um recurso
31. Transparência
● Transparência de acesso:
– Sistemas operacionais diferentes, convenções p/
nomeação de arquivos, etc
● Transparência de localização:
– Usuários não têm acesso a localização física dos
recursos: nomes lógicos, URL
● Transparência de migração:
– A URL não dá pistas se sua localização corrente
→ sempre esteve na mesma localização
● Transparência de relocação:
– Uso móvel de laptops, cujos usuários continuam a
usá-los quando vão de um local para outro
32. Transparência
● Transparência de replicação:
– Aumentar disponibilidade ou desempenho:
sistemas de arquivos distribuídos
● Transparência de concorrência:
– Manter a consistência de recursos
compartilhados: uso de transações
● Transparência a falhas:
– Usuário não percebe que um recurso deixou de
funcionar bem e que, subsequentemente, o
sistema se recuperou da falha. Servidor Web
ocupado.
33. Abertura
● SD deve oferecer serviços de acordo com regras
padronizadas
– Sintaxe e semântica desses serviços
● Em geral, serviços são especificados por meio de
interfaces
– Completude e neutralidade
● Interoperabilidade
– Até que ponto duas implementações de
sistemas/componentes de fornecedores distintos
devem coexistir e trabalhar em conjunto
● Portabilidade
– Até que ponto uma app desenvolvida por um SD
“A”
“A” pode ser executada, sem modificação, em um
SD “B”
“B”
34. Escalabilidade
● SDs operam efetivamente em diferentes
escalas, desde pequenas intranets à Internet
● Três dimensões diferentes:
– Tamanho: fácil add usuários e recursos
– Geográfica: usuários e recursos podem estar
dispersos
– Administrativo: gerenciamento simples, mesmo
envolvendo organizações adminstrativas
diferentes
35. Escalabilidade
● Problemas de escalabilidade:
Conceito
Conceito Exemplo
Exemplo
Serviços centralizados Um único servidor para todos os serviços
Dados centralizados Uma única lista telefônica on-line
Algoritmos centralizados Realizar roteamento com base em informações
completas
● Serviços centralizados:
– gargalo do sistema
● Dados centralizados:
– DNS
● Algoritmos centralizados:
– Em um SD de grande porte, mensagens devem
ser roteados por muitas linhas
36. Escalabilidade
● Algoritmos centralizados:
– Nenhuma máquina tem informações completas
sobre o estado do sistema
– As máquinas tomam decisões tendo como base
somente informações locais
– A falha de uma máquina não inviabiliza o
algoritmo
– Não há nenhuma premissa implícita quanto à
existência de um relógio global
37. Escalabilidade
● Comunicação síncrona
– SDs foram originalmente projetados para redes
locais
– Um cliente requisita um serviço e fica bloqueado
até obter uma resposta
– Para redes de longa distância o tempo de
resposta cresce em 3 ordens de grandeza
● Comunicação não confiável
– Políticas conflitantes em relação à utilização
(pagamento) de recursos, gerenciamento e
segurança
38. Técnicas de escalabilidade
● Problemas de desempenho causados por
capacidade limitada de servidores e rede
● Há três técnicas para ampliar sistemas:
– Ocultar latências de comunicação
– Distribuição
– Replicação
39. Técnicas de escalabilidade
● Ocultar latências
– Ideia básica: evitar espera por requisições remotas de serviços
– Comunicação assíncrona
● Quando chega uma resposta, a app é interrompida e um
manipulador especial é chamado para concluir a requisição
emitida anteriormente
– Comum em sistemas de lote e computação paralela
– Apps interativas, em geral, não possuem atividades em espera
● Solução é diminuir comunicação global, passar parte da
computação que normalmente é executada no servidor para
o cliente
– Acesso a banco de dados por meio de formulários
● Despacho de código é suportado na Web sob a forma de
applets Java e Javascript (Figura)
41. Técnicas de escalabilidade
● Distribuição
– Envolve tomar um componente, subdividi-lo em
partes menores, espalhar essas partes no sistema
– DNS
● Hierarquia em uma árvore de domínios
● Zonas sem sobreposição
42. Técnicas de escalabilidade
● Distribuição
– Outro exemplo é a Web
● Enorme sistema baseado em documentos
● Fisicamente distribuída por um grande número de
servidores
● O nome do servidor que manipula um documento está
codificado na URL
43. Técnicas de escalabilidade
● Replicação
– Aumenta a disponibilidade do sistema
– Ajuda a equilibrar a carga entre componentes, o
que pode resultar em melhor desempenho
– Técnicas de cache resultam em fazer uma cópia
de um recurso, em geral na proximidade do
acesso do cliente àquele recurso (decisão do
cliente)
– Ambos podem resultar em problemas de
consistência!
44. Segurança
● Três componentes fundamentais:
– Confidencialidade: proteção contra indivíduos não
autorizados
– Integridade: proteção contra alterações,
atualizações ou corrupção de dados
– Disponibilidade: proteção contra interferências no
acesso aos recursos
45. Tipos de sistemas distribuídos
● Sistemas de computação distribuídos
● Sistemas de informação distribuídos
● Sistemas embutidos distribuídos
46. Sistemas de computação
distribuídos
● Utilizados para tarefas de computação de alto
desempenho (HPC)
– Computação em cluster
– Computação em grid
– Computação em nuvem (será abordada em outra
aula!)
47. Computação em cluster
● Relação custo/desempenho de computadores
pessoais
● Redes de alta velocidade
● Em geral, empregada para computação
paralela
– Beowulf baseado em Linux
– Mosix adota abordagem simétrica
● Imagem de sistema único, migração de processos
49. Computação em grade
● Alto grau de hetorogeneidade
– Nenhuma premissa é adotada em relação a
hardware, SO, redes, domínios administrativos,
políticas de segurança, etc.
● Diferentes organizações são reunidas para
permitir colaboração entre grupos de pessoas
e intituições
– Organização virtual
– Servidores de computação, supercomputadores,
equipamentos específicos (telescópios),
facilidades de armazenamentos (bancos de dados
distribuídos, sistemas de arquivos distribuídos)
51. Computação em grade
● Camada base:
– Provê interfaces para recursos locais
– Permitem compartilhamento de recursos
– Funções de gerenciamento de recursos,
● Consulta estado e capacidade dos recursos
● Camada de conectividade
– Protocolos de comunicação
– Serviços de autenticação e questões de
segurança
52. Computação em grade
● Camada de recursos
– Responsável pelo gerenciamento de um único
recurso
– Informações sobre configuração de um recurso
específico
– Controle de acesso, pode utilizar serviços da
camada de conectividade
53. Computação em grade
● Camada coletiva:
– Manipula acessos múltiplos a recursos
– Descoberta de serviços, escalonamento de
tarefas, replicação de dados, etc
● Camada de aplicação
– Aplicações que executam em um organização
virtual e utilizam o ambiente de computação em
grade
54. Computação em grade
● Tendência atual de migração para uma
“arquitetura orientada a serviços”
– OGSA (Open Grid Service Architecture)
– Consistem de várias camadas e muitos
componentes, em geral, serviços Web
55. Sistemas de informação distribuídos
● Aplicações empresariais cujos clientes enviam
requisições ao servidores
– Processamento de transações distribuídas
– Integração de apps empresariais
● EAI (Enterprise Application Integration)
57. Sistemas de processamento de
transações
● Propriedades das transações:
– A
Atômicas: indivisível
– C
Consistentes: não viola invariantes do sistema
– I
Isoladas: transações concorrentes não interferem
umas nas outras
– D
Duráveis: uma vez realizada, as alterações são
permanentes
61. Sistemas distribuídos pervasivos
● Ausência geral de controle administrativo
humano
● Requisitos
– Adotar mudanças contextuais
– Incentivar composição ad hoc
– Reconhecer compartilhamento como padrão
62. Sistema eletrônico para tratamento
de saúde
● Monitoração de uma pessoa em um sistema
pervasivo
– (a) Hub local
– (b) Conexão contínua sem fio
63. Redes de sensores
● Questões importantes
– Como montar (dinamicamente) uma árvore
eficiente em uma rede de sensores?
– Como ocorre a agregação de resultados? Ela
pode ser controlada?
– O que acontece quando enlaces de rede falham?
64. Redes de sensores
● Organizando um BD de rede de sensores
– (a) armazenando e processando dados somente
no site do operador
65. Redes de sensores
● Organizando um BD de rede de sensores
– (b) armazenando e processando dados somente
nos sensores
66. Problemas
● Uma definição alternativa para um sistema distribuído: ele é
um conjunto de computadores independentes que fornece a
impressão de ser um sistema único, isto é, o fato de haver
vários computadores fica completamente oculto para os
usuários. Dê um exemplo para o qual essa visão viria muito a
calhar.
● Qual é o papel do middleware em um sistema distribuído?
● Explique o significado de transparência e de exemplos de
diferentes tipos de transparência?
● O que é um sistema distribuído aberto e quais são os
benefícios que a abertura proporciona?
● Descreva o significado de sistema escalável.
● Por que é tão difícil ocultar a ocorrência e a recuperação de
falhas em um sistema distribuído?