Buscar

Exercícios Capítulo 1 - 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.1- Cite cinco tipos de recursos de hardware e cinco tipos de recursos de dados ou de software que 
possam ser compartilhados com sucesso. Dê exemplos práticos de seu compartilhamento em sistemas 
distribuídos. 
R: Como recursos de hardware, podemos citar o compartilhamento de discos para 
armazenamento de dados, o compartilhamento de poder de processamento, 
compartilhamento de periféricos como impressoras através de servidores de impressão, o 
compartilhamento de placas de expansão como as GPUs (Graphics Processing Unit), e o 
compartilhamento de rede através de switches e roteadores. 
Como recursos de software, temos o compartilhamento de arquivos, compartilhamento de 
bases de dados (database), compartilhamento de sessões remotas em sistemas operacionais, a 
oferta de aplicações Web e de documentos http (páginas Web). 
Como exemplos: 
- Um escritório onde computadores precisam estar conectados em rede, para acesso aos 
sistemas em uso, e que por limitações possuem apenas uma impressora a disposição, 
compartilhada por meio de um print server conectado na rede interna. 
- Um conjunto de computadores geograficamente afastados, mas conectados em rede, através 
de diversas infraestruturas, compartilhando o poder computacional de suas GPUs. 
- Uma residência onde todas as TVs ou computadores tem acesso a uma serie de pastas 
compartilhadas na rede local, pastas estas contendo arquivos de mídia em áudio e vídeo. 
 
1.2- Como os relógios de dois computadores ligados por uma rede local podem ser sincronizados sem 
referência a uma fonte de hora externa? Quais fatores limitam a precisão do procedimento que você 
descreveu? Com os relógios de um grande número de computadores conectados pela Internet 
poderiam ser sincronizados? Discuta a precisão desse procedimento. 
R: Dois computadores podem sincronizar seus relógios por troca de mensagens entre sí. 
Sendo um deles o que vai servir como referência por supostamente ser o que tem a hora 
correta, então fazendo uso de algoritmos que calculem e que meçam o tempo de envio e 
retorno das mensagens, o computador que consulta a hora pode avaliar desde possíveis 
atrasos de comunicação, até as marcas temporais das mensagens referentes aos relógios 
internos de cada máquina, para então calcular a diferença no atraso durante a comunicação, o 
tempo que será necessário ser ajustado e então os relógios para então estarem sincronizados. 
Fatores limitantes podem ser por exemplo, sobrecarga na rede local, levando a atrasos na 
comunicação ou até mesmo falhas de comunicação na rede, a ausência de comunicação, a 
indisponibilidade do computador consultado para responder as requisições, falhas no 
desenvolvimento do algoritmo. 
Utilizando-se da estratégia já mencionada, é possível também fazer a sincronização de 
computadores através da internet, desde que uma máquina seja escolhida como referência 
precisa, para todos os outros. Más então podem ocorrer em muito maior escala, os atrasos e 
falhas de comunicação, já que os pacotes podem viajar por uma grande quantidade de 
equipamentos e a cada equipamento o atraso em milissegundos vai se acumulando. Para 
solucionar possíveis problemas o algoritmo deve ser capaz de driblar essas falhas. 
 
1.3- Considere as estratégias de implementação de MMOG (jogos online multijogador massivos) discutidas na 
Seção 1.2.2. Em particular, quais vantagens você vê em adotar a estratégia de servidor único para representar 
o estado do jogo para vários jogadores? Quais problemas você consegue identificar e como eles 
poderiam ser resolvidos? 
R: Como vantagens é possível apontar a redução na complexidade no gerenciamento e 
consistência do mundo virtual, a redução na complexidade na manutenção da coerência, a 
agilidade na comunicação de eventos internos. 
Como problemas, é possível mencionar as dificuldades ligadas ao porte da infraestrutura, a 
necessidade de estratégias internas eficientes para a distribuição regional de acessos (de 
usuários), problemas envolvendo limites na arquitetura e instalações da infraestrutura que 
possam causar indisponibilidade momentânea geral devido a um possível acesso massivo por 
exemplo. 
Problemas como os citados poderiam ser evitados com a distribuição de servidores por região 
(continente/país) em que haja demanda, também descentralizando o serviço, distribuindo o 
serviço por regiões de acordo com a demanda. 
 
1.4- Um usuário chega a uma estação de trem que nunca havia visitado, portando um PDA capaz de 
interligação em rede sem fio. Sugira como o usuário poderia receber informações sobre serviços locais e 
comodidades dessa estação, sem digitar o nome ou os atributos da estação. Quais os desafios técnicos devem 
ser superados? 
R: Dados correspondentes à localização atual do usuário poderiam ser disponibilizados 
por meio de acesso wireless oferecido pela estação, mesmo que um acesso restrito (não 
conectado à internet), oferecendo ao usuário acesso a uma leve aplicação web, com pelo 
menos texto e imagens estáticas, exibindo os dados relacionados à localidade. 
Alguns dos desafios são, necessidade de altíssima capacidade para múltiplas conexões 
nos pontos de acesso da estação, qualidade do serviço de conexão em rede sem fio, qualidade 
na aplicação web garantindo baixo consumo de recursos e compatibilidade com os mais 
diversos tipos de PDAs, constante verificação na consistência entre os dados no banco de 
dados e o mundo real, constante crescimento na base de dados em relação ao mundo real, 
dentre outros desafios. 
 
 
1.5- Compare e contraste a computação em nuvem com a computação cliente-servidor mais tradicional. O que 
há de novo em relação à computação em nuvem com conceito? 
R: A computação em nuvem foca muito na distribuição do serviço como uma commodity, 
tratando os serviços fornecidos como alugados a quem contrata o serviço, enquanto que a 
computação no formato cliente-servidor tradicional foca no serviço como estar à disposição 
para as demandas dos clientes que se são cabíveis não havendo diferenciação na carga 
demandada por exemplo. 
O conceito de computação em nuvem apresenta como novidade a visão de que computação é 
um serviço voltado ao público geral. Sendo vista como um serviço que dispõe de capacidade 
suficiente pra suportar todas as necessidades dos usuários, de acordo com a aplicação em 
execução, provendo armazenamento de dados, aplicação remota, processamento e 
infraestrutura, sendo fornecidos fisicamente ou virtualmente por software. 
 
1.6- Use a World Wide Web como exemplo para ilustrar o conceito de compartilhamento de recursos, cliente e 
servidor. Quais são as vantagens e desvantagens das tecnologias básicas HTML, URLs e HTTP para navegação 
em informações? Alguma dessas tecnologias é conveniente como base para a computação cliente-servidor em 
geral? 
R: A WWW (rede mundial de computadores) serve como exemplo no sentido de 
servidores de arquivos, como os de texto estático e troca de mensagens entre os 
computadores, em que as páginas web são esses arquivos (em texto estático), e as mensagens 
são as enviadas encapsuladas de acordo com os protocolos de comunicação referentes a cada 
tipo de serviço buscado, e no sentido de cliente, sendo o que está ali para o consumo dos 
serviços oferecidos. 
O HTML por ser uma linguagem de certa forma simples e utilizada no desenvolvimento de 
páginas Web, acaba tornando compatível com a grande maioria de dispositivos conectados à 
internet, consegue ser facilmente utilizado para levar conteúdo aos mais diversos perfis de 
hardware. Apresenta infelizmente algumas limitações, como por exemplo, só conseguir gerar 
conteúdo estático, pra isso, novas tecnologias tem que ser utilizadas em conjunto, pra trazer 
inovação e modernidade ao conteúdo exibido nas páginas web. 
O URL tem como objetivo descrever identificadores de recursos uniforme, como localizadores 
de recursos, onde navegadores os examinam para identificaresses recursos correspondentes, 
tem como vantagem a forma facilitada de descrever os recursos incorporados em páginas 
Web. Embora muito eficiente no que diz respeito a sua designação, o URL apresenta uma baixa 
variedade de recursos e pouca flexibilidade (intolerância) com erros, tudo tem que seguir 
exatamente os padrões definidos, em ordem e formato, ou resultados inesperados vão ser 
apresentados. 
O HTTP que tem por objetivo definir a forma como os navegadores e outros tipos de clientes 
interagem com servidores WEB, onde o cliente envia uma mensagem de requisição a um 
servidor web e recebe o recurso solicitado. Embora um protocolo bem definido e consistente, 
ele possui um conjunto reduzido de operações a serem executados, e também por mensagens 
HTML possuírem uma grande quantidade de caracteres, isso o torna ineficiente para o envio 
de pequenas quantidades de dados. 
Sim, por exemplo, o HTTP e URL são muito convenientes, por possibilitarem interligar e 
estabelecer identificadores de recursos, para que os computadores possam comunicar-se 
entre si. 
1.7- Um programa servidor escrito em uma linguagem (por exemplo, C++) fornece a implementação de um 
objeto BLOB destinado a ser acessado por clientes que podem estar escritos em outra linguagem (por exemplo, 
Java). Os computadores cliente e servidor podem ter hardware diferente, mas todos eles estão ligados em uma 
rede. Descreva os problemas devidos a cada um dos cinco aspectos da heterogeneidade que precisam ser 
resolvidos para que seja possível um objeto cliente invocar um método no objeto servidor. 
R: - Rede: no que se refere a esse aspecto, pressupõe-se pelo modelo (OSI) que os 
protocolos de rede possuem meios de lidar com essa heterogeneidade. 
- Hardware do Computador: no que se refere a esse aspecto, a depender da arquitetura de 
cada máquina, vai ser necessário resolver as diferentes possibilidades de representações, 
sendo tipos, dados ou até mesmo os objetos, com por exemplo, um padrão que deverá ser 
determinado e seguido para que seja possível essa comunicação. 
- Sistemas operacionais: no que se refere a esse aspecto, seria necessário desenvolver um 
meio nativo ou padrão do sistema servidor, dentro do cliente, para que ao chegar de uma 
mensagem no servidor, o objeto do cliente possa efetuar essa invocação do método servidor. 
- Linguagens de Programação: no que se refere a esse aspecto, considerando as possíveis 
diferentes linguagens de programação, e que cada uma possui sua forma de representar dados 
e estruturas de dados, é preciso definir um tipo comum as possíveis linguagens, para que esse 
possa ser utilizado para definir qual estrutura de dados será utilizada nos objetos, 
possibilitando uma “tradução” entre objetos das linguagens. 
- Implementações de diferentes desenvolvedores: no que se refere a esse aspecto, é preciso 
estabelecer modelos padrão, e que todos sigam modelos e que não fujam desse padrão. 
 
1.8- Um sistema distribuído aberto permite que novos serviços de compartilhamento de recursos (como o 
objeto BLOB do exercício 1.7) sejam adicionados e acessados por diversos programas clientes. Discuta, no 
contexto desse exemplo, até que ponto as necessidades de abertura do sistema diferem das necessidades da 
heterogeneidade. 
R: Levando em consideração que os desafios da heterogeneidade tenham sido tenham 
sido resolvidos, tais como o meio e protocolos de comunicação, padrões dos objetos e seus 
dados, padrões de mensagens definidos e etc., a tarefa de adicionar novos serviços a um 
sistema distribuído será simples. 
Mas quando se fala em sistema distribuído aberto, todos esses desafios devem naturalmente 
ser levados em consideração, os padrões e documentação devem estar nos conformes, pra 
que então o novo serviço seja implementado, a equipe envolvida na implementação deve 
conhecer essa documentação e estar de acordo com ela. Depois de implementado o novo 
serviço deve ser divulgado (publicada no sistema), para que quem costuma acessar o serviço 
com seus clientes perceba essa nova funcionalidade e possam acessa-la. 
 
1.9- Suponha que as operações do objeto BLOB sejam separadas em duas categorias – 
operações públicas que estão disponíveis para todos os usuários e operações protegidas, que 
estão disponíveis somente para certos usuários nomeados. Indique todos os problemas 
envolvidos para se garantir que somente os usuários nomeados possam usar uma operação 
protegida. Supondo que o acesso a uma operação protegida forneça informações que não 
devem ser reveladas para todos os usuários, quis outros problemas surgem? 
R: Vão ser necessárias ações para cada request de acesso a operações protegidas, sendo 
necessário identificar cada usuário que fizer uma solicitação, aí os problemas podem começar 
pra se decidir como identificar cada usuário. Cada objeto BLOB precisa saber como identificar 
esses usuários que tem permissão de acesso a essas operações protegidas, e saber identificar 
que as mensagens de request estão vindo de usuários com permissão. Deve ser necessário 
impedir que essas mensagens sejam interceptadas e consequentemente alteradas por 
usuários não autorizados, impedindo que se passem por usuários autorizados. Deve ser 
garantido que ao identificar-se, esse usuário sejam quem ele realmente diz ser, pra só então 
garantir acesso as operações protegidas. 
Como essas operações vão responder com mensagens que não devem ser exibidas a usuários 
não autorizados, é necessário que sejam adotadas medidas de proteção de ponta a ponta, 
como alguma técnica de criptografia por exemplo. 
 
1.10- O serviço INFO gerencia um conjunto potencialmente muito grande de recursos, cada um 
dos quais podendo ser acessado por usuários de toda a Internet por intermédio de uma chave 
(um nome de string). 
Discuta uma estratégia para o projeto dos nomes dos recursos que cause a mínima perda de 
desempenho à medida que o número de recursos no serviço aumenta. Sugira como o serviço 
INFO pode ser implementado de modo a evitar gargalos de desempenho quando o número de 
usuários se torna muito grande. 
R: Uma possível estratégia para a criação dos nomes dos recursos é basear-se na 
regionalização desses recursos já que esse serviço é oferecido para toda a internet, 
classificando por continente por exemplo. E a cada sub-região, os recursos poderiam ser ainda 
mais subdivididos, tornando possível acompanhar a demanda e o uso desses recursos, e 
melhorar a distribuição para cada sub-região. 
 Em nível global, o esquema de nomes poderia ser determinado pelos continentes 
(América do Norte, América do Sul, Europa,...), e ir incluindo nessas próprias chaves (o nome 
STRING) a que país e a que região desse país cada recurso se destina, tornando possível 
especificar através dessa chave. Por exemplo usando “América do Sul, Brasil, Nordeste, Ceará”, 
é fácil determinar uma chave pra especificar a que região, sub-região e área um determinado 
recurso se destina. 
Seguindo a lógica do parágrafo anterior, o serviço deve ser implementado de maneira 
distribuída, sendo assim, o serviço seria distribuído por "regiões", para no caso de exemplo de 
buscas ou consultas primeiramente o serviço a faz dentro de sua base de dados, pra só em 
seguida, partir para buscas em servidores adjacentes. Acesso a dados ou recursos ausentes 
dentro de uma determinada região somente seria necessários caso não presentes na base de 
dados de sua própria região. 
 
1.11- Liste os três principais componentes de software que podem falhar quando um processo 
cliente chama um método em um objeto servidor, dando um exemplo de falha em cada caso. 
Sugira como os componentes podem ser feitos de modo a tolerar falhas uns dos outros. 
R: Um software, a depender de sua arquitetura, pode apresentar diversas falhas, como 
por exemplo, no case de uma arquitetura cliente-servidor, em que a comunicação ocorre via 
rede, pode apresentar as falhas: 
Noservidor, o serviço deixa de se comportar como esperado, por ter recebido um dado ou 
informação inesperada, por exemplo um ataque utilizando-se de caracteres invisíveis. 
No cliente, quando por exemplo, um dado recebido chegou de maneira diferente do esperado, 
levando a comportamento inesperado, por exemplo travamentos; 
No servidor, quando o número de acessos é tão grande, que o leva a colocar-se em modo de 
proteção, passando a negar serviço, o “deny of service”; 
 
1.12- Um processo servidor mantém um objeto de informação compartilhada, como o objeto 
BLOB do Exercício 1.7. Dê argumentos contra permitir que os pedidos do cliente sejam 
executados de forma concorrente pelo servidor e a favor disso. No caso de serem executados 
de forma concorrente, dê um exemplo de uma possível “interferência” que pode ocorrer entre 
as operações de diferentes clientes. Sugira como essa interferência pode ser evitada. 
R: Quando se fala em acesso concorrente, é preciso tomar muito cuidado em relação a 
quem está alterando o que e quando aqui foi alterado, pra que outro usuário tentando acessar 
tenha acesso de maneira integra, com os dados atualizados. 
O que se pode citar contra o acesso concorrente, é o problema ligado referente as operações 
simultâneas, e o acesso aos resultados dessas operações. A favor, é possível citar o uso 
eficiente de recursos e infraestrutura. 
Como exemplo de possível interferência, um usuário ‘A’ tem acesso a um valor salvo em 
memória, e um usuário ‘B’ tem acesso a esse mesmo valor; Suponha que o usuário B está 
fazendo uso desse valor salvo em memória, exibindo em tela por exemplo, e que 
simultaneamente, o usuário ‘A’ alterou esse valor em memória por um motivo qualquer. O 
usuário ‘B’ que antes estava exibindo um valor percebeu essa alteração, involuntariamente, 
passa a exibir outro valor. Se fosse o caso de uma apresentação por exemplo, esses valores 
seriam alterados durante a apresentação, causando problemas de compreensão. 
 
1.13- Um serviço é implementado por vários servidores. Explique por que recursos poderiam ser 
transferidos entre eles. Seria satisfatório para os clientes fazer multicast (difusão seletiva) de 
todos os pedidos para o grupo de servidores, como uma maneira de proporcionar 
transparência de mobilidade para os clientes? 
R: Esses recursos poderiam ser distribuídos com o objetivo de trazer agilidade na 
comunicação cliente-servidor e também pra proporcionar melhor desempenho pros 
servidores, mas essa implementação teria de seguir algum critério pra distribuir os acessos 
para cada região. 
No caso do uso de multicast pra um grande grupo de servidores, não seria muito interessante 
pros clientes, pois seria necessário haver uma grande busca, e filtragem das respostas, 
resultando numa carga considerável de trabalho pros servidores. 
 
1.14- Os recursos na World Wide Web e outros serviços são nomeados por URLs. O que 
denotam as iniciais URL? Dê exemplos de três diferentes tipos de recursos da Web que podem 
ser nomeados por URLs. 
R: A letras URL significam Uniform Resource Locator, servindo pra identificar recursos 
disponíveis, conforme o seu esquema descrever. 
Os Ftp, para protocolo de transferência de arquivos; Os Http, para disponibilizar recursos no 
protocolo de transferência de HiperText; Os eD2k, que são protocolos de comunicação usados 
pra compartilhar arquivos entre computadores disponibilizados publicamente; Os ‘magnet’ 
links, que são usados pra referenciar popularmente recursos disponíveis para download via 
redes peer-to-peer. 
 
1.15- Cite um exemplo de URL HTTP. Liste os principais componentes de um URL HTTP, dizendo 
como seus limites são denotados e ilustrando cada um, a partir de seu exemplo. Até que ponto 
um URL HTTP tem transparência de localização? 
R: ‘https://www.pt.wikipedia.org/wiki/URL ’ 
O primeiro componente é o esquema , que vai até o caractere “;”. Aqui o esquema é “https”. 
O segundo é o pathname, com o nome do servidor, que se inicia logo após os caracteres “//” . 
Aqui o pathname é “www.pt.wikipedia.org” . 
O terceiro é o caminho, que se inicia logo após o caractere “/”, depois do pathname. Aqui o 
caminho é “wiki/URL” . 
A transparência permanece enquanto os nomes lógicos dos recursos permanecerem não 
relacionados por exemplo a localização do servidor web de uma determinada url. Ou seja, essa 
url permanecer não relacionada aos endereços ip dos seus recursos.

Continue navegando