Buscar

Exercícios Capítulo 2 Sistemas Distribuídos - Coulouris

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1) Descreva e ilustre a arquitetura cliente-servidor de uma ou mais aplicações na
Internet (por exemplo: Web e e-mail).
Em particular, os processos clientes interagem com processos servidores, localizados
possivelmente em distintos computadores hospedeiros, para acessar os recursos
compartilhados que estes gerenciam. Os servidores podem, por sua vez, ser clientes de
outros servidores. Por exemplo, um servidor Web é frequentemente um cliente de um
servidor de arquivos local que gerencia os arquivos nos quais as páginas Web estão
armazenadas. Os servidores Web, e a maioria dos outros serviços Internet, são clientes
do serviço DNS, que mapeia nomes de domínio Internet a endereços de rede (IP).
2) Para a aplicação apresentada no exercício anterior, discuta como os servidores
cooperam ao prover um serviço.
Web: servidores Web cooperam com servidores proxy para minimizar o tráfego de rede e
latência. Responsabilidade para consistência é feitapelos servidores proxy que verifique
as datas de modificação de páginas freqüentemente com o servidor web de origem. 
Mail: servidores SMTP não mantem necessariamente tabelas de roteamento de
distribuição de email para todos os destinos. Em vez disso, eles simplesmente
encaminham mensagens dirigidas a destinos desconhecidos para outro servidor que é
provavelmente tem as tabelas.
Netnews: Todos os servidores NNTP cooperam da maneira descrita acima para fornecer o
mecanismo de feed de notícias. 
3) Como as aplicações apresentadas no exercício 1 acomodam o particionamento, a
replicação ou caching de dados entre os servidores.
Web: Web page masters são mantidos em um sistema de arquivos em um único servidor.
As informações sobre a web como um todo é, portanto, dividido entre muitos servidores
web.
A replicação não é uma parte dos protocolos de web, mas um site muito usado pode
fornecer vários servidores com cópias idênticas do sistema de arquivos em questão,
utilizando um dos meios conhecidos para replicar slowly alteração de dados. Solicitações
HTTP podem ser multiplexados entre os servidores idênticos utilizando o (bastante
básico) mecanismo de compartilhamento de carga DNS. Além disso, os servidores proxy
web replicação apoio através do uso de réplicas em cache de páginas e navegadores
usados recentemente suportar a replicação através da manutenção de um cache local de
páginas acedidas recentemente. 
Mail: As mensagens são armazenadas somente em seus destinos. Ou seja, o serviço de
email é baseado principalmente em particionamento, embora uma mensagem para vários
destinatários é replicado em vários destinos. 
Netnews: Cada grupo é replicada somente em locais que exigem isso.
4) Sugira algumas aplicações para o modelo de processos pares (peers),
distinguindo entre os casos quando o estado de todos pares necessita ser idêntico
e casos que exijam menos consistência.
Trabalho cooperativo (groupware) aplicativos que fornecem um processo de pares perto
de cada usuário. 
Os aplicativos que precisam apresentar todos os usuários com estado idêntico 
compartilhada whiteboard, visão compartilhada de uma discussão textual.
Menos consistência: onde um grupo de usuários está trabalhando em um documento
compartilhado, mas usuários diferentes podem acessar diferentes partes ou talvez um
usuário bloqueia parte do documento e aos outros são mostrados a nova versão quando
ele estiver terminada. 
Alguns serviços são efetivamente grupos de processos pares para fornecer
disponibilidade ou tolerância a falhas. Se eles particionarem dados, então eles não
precisam para manter consistente em tudo. 
5) Liste os tipos de recursos locais que são vulneráveis para um ataque por um
programa não confiável que é carregado de um local remoto e executa em um
computador local.
Objetos no sistema de arquivos, como arquivos e diretórios, podem sofrer leitura e escrita,
e podem ser criados e deletados usando os direitos locais do usuário que executa o
programa.
A comunicação de rede: o programa pode tentar criar sockets, conecta-los, enviar
mensagens, etc. Acesso a impressoras. Também é possível se passar pelo usuário de
várias formas, como por exemplo, enviando e recebendo email. 
6) Dê alguns exemplos de aplicações onde o uso de código móvel é interessante.
Fazendo a computação próximo ao usuário, como nos Applets.
Casos em que os objetos são enviados para um processo e o código é necessário para
torna-lo usável.
7) Quais fatores afetam o tempo/capacidade de resposta (responsiveness) de uma
aplicação que acessa dados compartilhados gerenciados por um servidor.
Descreva e discuta alternativas para os problemas.
Quando o cliente acessa um servidor, faz-se uma invocação de uma operação no servidor
que esta rodando num computador remoto. As seguintes causas podem afetar o tempo de
resposta: 
1. Servidor sobrecarregado
2. Latência na troca de request e reply (devido a camadas do sistema operacional e
do middleware no cliente e servidor)
3. Carga na rede
O uso de cache ajuda com todos os problemas acima, Em particular cache no cliente 
reduz todos eles.
8) Diferencie buffering e caching.
Buffer: uma técnica para armazenar dados transmitidos a partir de um processo de envio
a um processo receptor em memória local ou armazenamento secundário até que o
processo receptor esteja pronto para usar. Por exemplo, ler dados de um arquivo ou
transmissão de mensagens através de uma rede, é melhor para lidar com isso em
grandes blocos. Os blocos são mantidos em armazenamento de buffer no espaço de
memória do processo receptor. O buffer é liberado quando os dados tiverem sido
consumidos pelo processo. 
Caching: uma técnica para otimizar o acesso a objetos de dados remotos, mantendo uma
cópia deles na memória local ou em armazenamento secundário. Os acessos a partes do 
objecto remoto são traduzidos em acessos ao partes da cópia local correspondente. Ao 
contrário de buffering, a cópia local pode ser mantido enquanto houver locais memória 
disponível para armazená-la. Um algoritmo de gerenciamento de cache e uma estratégia 
de liberação são necessários para gerenciar o uso da memória alocada para o cache.
9) Dê alguns exemplos de falhas em hardware e software que podem ou não podem
ser tolerados pelo uso de redundância em um sistema distribuído. Para quais o uso
de redundância, em casos apropriados, torna o sistema tolerante a falhas.
Falhas de Hardware: processadores, discos e conexões de rede podem usar
redundância, por exemplo, rodar um processo em múltiplos computadores, escrever em
dois discos, ter dois roteadores separados na rede disponível. 
Falhas de software, crashes: Redundância não é bom com erros, porque eles podem ser
replicados. Processos replicados ajudam com crashes que podem ocorrer devidos a bugs
em partes independentes do sistema. Mensagens retransmitidas ajudam com o problema
de perda de mensagens.
10) Considere um servidor simples que atenda a pedidos de clientes sem acessar
outros servidores. Explique por que geralmente não é possível determinar um
tempo limite despendido pelo servidor para responder ao pedido do cliente. O que
poderia ser feito para tornar o servidor capaz de executar pedidos dentro de um
tempo delimitado? É uma opção prática?
A taxa de chegada de requests do cliente é imprevisível. Se o servidor usa threads para
executar requests de forma concorrente, ele pode não ser capaz de alocar tempo
suficiente para um request em particular que tem um tempo limite. Se o servidor coloca o
request na fila e vai tirando da fila um de cada vez,eles podem esperar na fila por uma
quantidade de tempo ilimitada. 
Para executar requests dentro de um período de tempo limitado, limite o numero de
clients para se adequar a sua capacidade. Para lidar com mais clients, usa um servidor
com mais processadores. Depois disso, ou em vez disso, replique o serviço. 
A solução pode ser cara e, em alguns casos manter as replicas consistentes pode levar
úteis ciclos de processamento, reduzindo os ciclos disponíveis para execução de
requests.
11) Para cada um dos fatores que contribuem para o tempo levado para transmitir
uma mensagem entre dois processos sobre um canal de comunicação, discuta
quais medidas poderiam ser tomadas para configurar um limite de tempo total. Por
que estas medidas não são fornecidas para os sistemas distribuídos de propósito
geral?
O tempo gasto pelos serviços de comunicação do SO nos processos de envio e recepção:
estas tarefas teriam de ser garantidas com ciclos de processador suficientes. 
O tempo necessário para acessar a rede: o par de processos de comunicação precisaria
ter garantia da capacidade de rede. 
O tempo para transmitir os dados é uma constante uma vez que a rede tenha sido
acessada. 
Para fornecer as garantias acima, precisaríamos de mais recursos e custos associados.
As garantias associadas ao acesso à rede podem, por exemplo, ser fornecidas com redes
ATM, mas são dispendiosas para serem utilizadas como LANs. 
Dar garantias para os processos é mais complexo. Por exemplo, para um servidor para
garantir a receber e enviar mensagens dentro de um limite de tempo significaria limitar o
número de clientes.
12) O serviço Protocolo de Tempo de Rede (NTP) pode ser usado para sincronizar
relógios de computadores. Explique por que, mesmo com este serviço, não há
garantias para a diferença entre dois relógios.
Qualquer cliente que utilize o serviço NTP deve comunicar com ele por meio de
mensagens passadas por um canal de comunicação. Se um limite for definido no
momento que transmitimos uma mensagem através de um canal de comunicação, então
a diferença entre o relógio do cliente e o valor fornecido pelo serviço NTP também seria
limitada. Com um tempo de transmissão de mensagens ilimitado, as diferenças de relógio
são necessariamente ilimitadas.
13) Considere dois serviços de comunicação para uso em um sistema distribuído
assíncrono. No serviço A, mensagens podem ser perdidas, duplicadas ou atrasadas
e, checksums aplicam-se somente a cabeçalhos. No serviço B, mensagens podem
ser perdidas, atrasadas ou entregadas muito rápido para recipiente de tratamento,
mas estas são entregues na ordem e com o conteúdo correto. Descreva as classes
de falhas para cada serviço. Classifique suas falhas de acordo com os efeitos nas
propriedades de validade e integridade. Pode um serviço B ser descrito como um
serviço de comunicação confiável?
Serviço A pode ter:
• Falhas arbitrárias: 
◦ checksum não se aplicar ao corpo da mensagem, o corpo da mensagem pode
ser corrompido. 
◦ mensagens duplicadas. 
• Falhas de omissão (mensagens perdidas) 
◦ Uma vez que o sistema distribuído que é usado de forma assíncrona, ele não
pode sofrer de falhas de temporização. 
▪ Validade é negado por mensagens perdidas 
▪ Integridade é negado por mensagens corrompidas ou duplicadas
Serviço B pode ter: 
• Filhas de omissão (mensagens perdidas, mensagens dropadas) 
• Uma vez que o sistema distribuído que é usado de forma assíncrona, 
ele não pode sofrer de falhas de temporização. 
• Passa no teste de integridade, mas não no de validade, por conta disso, não pode
ser considerado confiável.
14) Considere um par de processos X e Y que usam o serviço de comunicação B do
exercício 13 para se comunicarem entre si. Suponha que X é um cliente e Y um
servidor e, que uma invocação consiste de uma mensagem de X para Y (pedido)
seguido por uma mensagem de reposta de Y para X. Descreva as classes de falhas
que podem ocorrer durante o processo de invocação.
Uma invocação pode sofrer com as seguintes falhas: 
Falhas de crash: X ou Y podem crashar, então, uma invocação pode sofrer com falhas de
crash. 
Falhas de omissão: se o serviço B sofrer com falhas de omissão, a mensagem de request
ou reply pode se perder.
15) Suponha que um disco básico pode ler, às vezes, valores que são diferentes
daqueles escritos. Discuta o tipo de falha que está ocorrendo. Sugira como esta
falha pode ser mascarada para produzir uma falha benigna, ou seja, que não cause
danos graves ao sistema. Agora sugira como mascarar a falha benigna.
Uma leitura básica de disco apresenta falhas arbitrárias. 
Isso pode ser mascarado usando checksum em cada bloco de disco (tornando improvável
que valores errados não sejam detectados).
Quando um valor incorreto é detectado, a leitura retorna nenhum valor em vez de um
valor errado (uma falha de omissão).
As falhas de omissão podem ser mascaradas replicando cada bloco de disco em dois
discos independentes o que tornar falhas de omissão improváveis.
16) Defina a propriedade de integridade da comunicação confiável e liste todos as
possíveis ameaças à integridade dos usuários e aos componentes do sistema.
Quais medidas podem tomadas para garantir a propriedade de integridade em face
de cada fonte de ameaça.
Integridade: a mensagem recebida é idêntica à enviada e nenhuma mensagem é
entregue mais de uma vez. 
Ameaças dos usuários: injectar mensagens falsas, reproduzir mensagens antigas, alterar
mensagens durante a transmissão. 
Ameaças de componentes do sistema: 
• mensagens podem ser corrompidas no caminho. 
• mensagens podem ser duplicadas por protocolos de comunicação que
retransmitem as mensagens. 
Medidas que podem ser adotadas: 
• Para ameaças de usuários use canais seguros ou técnicas de autenticação. 
• Para ameaças de componentes do sistema. Checksums para detectar mensagens
corrompidas mas depois temos um problema de validade (mensagem perdidas). As
mensagens duplicadas podem ser detectadas se números de sequência forem
anexados a mensagens.
17) Descreva possíveis ocorrências de ameaça a segurança (ameaças aos
processos, ameaças aos canais de comunicação e negação de serviço) que podem
ocorrer na Internet. 
Ameaças aos processos: sem autenticação servidores, existem muitas ameaças. Um
inimigo pode acessar os arquivos ou caixas de correio de outros usuários ou configurar
servidores 
'spoof'. Por exemplo. Um servidor pode ser configurado para 'spoof' serviço de um banco
e receber detalhes de transações financeiras do usuário.
Ameaças aos canais de comunicação: IP spoofing - enviar solicitações para servidores
com um endereço de fonte falsa, ataques man-in-the-middle. 
Negação de serviço: inundar um serviço publicamente disponível com mensagens
irrelevantes.

Continue navegando