Buscar

286128367-Lista-de-Exercicios-Capitulo-1-Sistemas-Distribuidos

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 4 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

Universidade Católica de Pernambuco 
Centro de Ciências e Tecnologia 
Sistemas Distribuídos 
Prof. Almir Pires – 
almir.pires@gmail.com 
Aluno: Bruno Xavier Peixoto da Rocha 
 
 
Lista de Exercícios – Capítulo 1 – Caracterização dos Sistemas Distribuídos 
Questões do Coulouris 
 
1. Dê cinco exemplos de recursos de hardware e cinco exemplos de recursos de software 
que podem ser utilmente compartilhados. Em cada caso, dê exemplos de como esse 
compartilhamento ocorre na prática em sistemas distribuídos? 
Hardware: 
CPU: servidor de computação (executa aplicações de processamento intenso para os 
clientes), servidor de objeto remoto (executa métodos em nome de clientes), programa do tipo 
worm (ações capacidade da CPU de computador de mesa com o usuário local). A maioria dos 
outros servidores, como servidores de arquivos, fazer alguma computação para os seus clientes, 
daí a sua cpu é um recurso compartilhado. 
memória: servidor cache (detém páginas web recentemente acessados em sua memória 
RAM, para um acesso mais rápido por outros locais computadores) 
disk: servidor de arquivos, servidor de disco virtual (ver Capítulo 8), vídeo sob demanda 
servidor (ver Capítulo 15). 
tela: sistemas de janelas de rede, tais como o X-11, permitir que os processos em 
computadores remotos para atualizar o conteúdo das janelas. 
impressora: impressoras em rede aceitar trabalhos de muitos computadores de 
impressão. gerenciá-los com um enfileiramento sistema. 
network capacity: a transmissão de pacotes permite que muitos canais de comunicação 
simultâneos (fluxos de dados) para ser transmitida nos mesmos circuitos. 
Software: 
Página web: servidores web permitem que vários clientes para compartilhar o conteúdo 
da página só de leitura (normalmente armazenado em um arquivo, mas às vezes gerado on-the-
fly). 
file: servidores de arquivos permitem que vários clientes para compartilhar leitura e 
gravação de arquivos. Conflitos de atualizações pode resultar em resultados inconsistentes. Mais 
útil para arquivos que são alterados com pouca freqüência, como binários de software. 
objeto: possibilidades de objetos de software são ilimitadas. Por exemplo. whiteboard 
compartilhado, diário compartilhado, quarto reserva sistema, etc. 
banco de dados: bases de dados destinam-se a gravar o estado definitivo de alguns 
conjuntos de dados relacionados. Eles têm sido compartilhado desde computadores multi-
usuários apareceu. Elas incluem técnicas para gerenciar atualizações simultâneas. 
newsgroup content: O sistema netnews faz cópias somente para leitura das notícias 
recentemente publicadas-disponível para os clientes em toda a Internet. Uma cópia do conteúdo 
newsgroup é mantida em cada netnews servidor que é uma réplica de aproximadamente aqueles 
em outros servidores. Cada servidor faz com que seus dados disponíveis para vários clientes. 
vídeo / áudio stream: Servidores podem armazenar vídeos inteiros no disco e entregá-los 
em velocidade de reprodução de múltiplos clientes simultaneamente. 
exclusive lock: um objeto em nível de sistema fornecido por um servidor trava, 
permitindo que vários clientes para coordenar a sua uso de um recurso (como impressora que 
não inclui um esquema de filas). 
2. Use a WWW (World Wide Web) como um exemplo para ilustrar os conceitos de 
compartilhamento de recursos, cliente e servidor. (Recomendação: ler estudo de caso no 
livro para responder!) 
Páginas da Web são exemplos de recursos que são compartilhados. Estes recursos são 
geridos pelos servidores Web. 
Arquitetura cliente-servidor. O Web Browser é um programa cliente (por exemplo, 
Netscape) que é executado no usuário de computador. O servidor da Web acessa arquivos locais 
que contêm as páginas da Web e em seguida, fornece-los para o cliente processos do navegador. 
URL - Uniform Resource Locator 
3. Um programa servidor escrito em uma linguagem (por exemplo, C++) provê a 
implementação de um objeto OBJ que deve ser acessado por clientes escritos em outra 
linguagem (Java, por exemplo). Os computadores onde executam os processos cliente e 
servidor podem ser diferentes em relação ao hardware, mas ambos estão conectados via 
Internet. Descreva os problemas que surgem com relação aos cinco aspectos de 
heterogeneidade estudados e que precisam ser resolvidos para tornar possível a invocação 
remota do método. (Coulouris – Exercício 1.7) 
À medida que os computadores estão ligados a uma internet, podemos supor que os 
protocolos da Internet lidar com as diferenças de redes. 
Mas os computadores podem ter um hardware diferente - portanto, temos de lidar com 
as diferenças de representação de itens de dados de pedido e mensagens de resposta dos clientes 
aos objetos. Um padrão comum será definido para cada tipo de item de dados que devem ser 
transmitidos entre o objeto e seus clientes. 
Os computadores podem executar sistemas operacionais diferentes, portanto, temos de 
lidar com diferentes operações para enviar e receber mensagens ou para expressar invocações. 
Assim, no / C ++ nível Java uma operação comum faria ser usado que será traduzido para a 
operação específica de acordo com o sistema operacional que ele é executado. 
Temos duas diferentes linguagens de programação C ++ e Java, eles usam 
representações diferentes para dados estruturas, tais como cordas, arrays, registros. Um padrão 
comum será definido para cada tipo de estrutura de dados que devem ser transmitidos entre o 
objeto e seus clientes e uma maneira de traduzir entre essa estrutura de dados e cada um dos 
idiomas. 
Podemos ter diferentes implementadores, por exemplo, um para C ++ e outra para Java. 
Eles terão de acordar sobre as normas comuns mencionadas acima e para documentá-los. 
4. Um sistema distribuído aberto permite que novos serviços como aquele fornecido pelo 
objeto OBJ da questão anterior sejam adicionados e acessados por uma grande variedade 
de programas clientes. O que caracteriza um sistema aberto (pense no que mais o sistema 
tem que ter além das características necessárias para lidar com a heterogeneidade)? 
• o sistema distribuído usa um conjunto comum de protocolos de comunicação (provavelmente 
protocolos de internet). 
• usa um padrão definido para representar os itens de dados (para lidar com a heterogeneidade 
de hardware). 
• Ele usa um padrão comum para operações de passagem de mensagens (ou para invocações). 
• Ele usa um padrão independente linguagem para representar estruturas de dados. 
Mas para o sistema distribuído aberto as normas devem ter sido acordado e documentado antes 
do BLOB objeto foi implementado. Os implementadores devem estar de acordo com essas 
normas. Além disso, a interface para o BLOB objeto deve ser publicado para que quando ele é 
adicionado ao sistema, actuais e novos clientes será capaz de acessá-lo. A publicação dos 
padrões permite que partes do sistema a ser implementado por diferentes fornecedores e 
trabalhar em conjunto. 
5. O serviço INFO gerencia potencialmente uma grande quantidade de recursos. Cada 
recurso pode ser acessado por usuários conectados via Internet através de uma chave (um 
nome, por exemplo). Como esses nomes poderiam ser organizados de modo a gerar o 
menor overhead possível à medida que a quantidade de recursos aumenta? Sugira como o 
serviço INFO pode ser implementado de forma a evitar gargalos de desempenho quando o 
número de usuários se torna muito grande. 
Algoritmos que usam estruturas hierárquicas dimensionar melhor do que aqueles que 
usam estruturas lineares. Por conseguinte, a solução deve sugerir um esquema de nomenclatura 
hierárquica. por exemplo. que cada recurso tem um nome do formulário 'ABC' etc em que o 
tempo necessário é O (log n), onde n existem recursos do sistema. 
Para permitir que um grande número de usuários, os recursos são divididos entre vários 
servidores, por exemplo,nomes começando com A a um servidor, com B no servidor 2 e assim 
por diante. Pode haver mais do que um nível de particionamento como no DNS. Para evitar 
gargalos de desempenho do algoritmo para procurar um nome deve ser descentralizadas. Esse é, 
ao mesmo servidor não deve ser envolvido em olhar acima de todo nome. (Uma solução 
centralizada usaria uma única servidor raiz que mantém um banco de dados local que mapeia 
partes da informação para servidores específicos). Alguns replicação é necessária para evitar tal 
centralização. Por exemplo: i) o banco de dados de localização pode ser replicado em vários 
servidores raiz ou ii) o banco de dados de localização pode ser replicado em todos os servidores. 
Em ambos os casos, diferente os clientes devem acessar servidores diferentes (por exemplo, os 
locais ou aleatoriamente). 
6. Liste três componentes de software que podem falhar quando um processo cliente 
invoca um método em um objeto servidor, dando um exemplo de falha em cada caso. Dê 
exemplos de medidas que introduziriam algum grau de tolerância a falhas no sistema. 
Os três principais componentes de software que podem falhar são: 
• o processo de cliente, por exemplo, ele pode falhar 
• o processo do servidor, por exemplo, o processo pode falhar 
• o software de comunicação, por exemplo, uma mensagem pode não chegar 
As falhas são geralmente causados independentemente um do outro. Exemplos de falhas 
dependentes: 
• se a perda de uma mensagem faz com que o processo do cliente ou servidor deixe de 
funcionar. (A queda de um servidor causaria um cliente a perceber que uma mensagem de 
resposta está faltando e pode indiretamente causar falha). 
• se os clientes quebrando servidores causar problemas. 
• Se a queda de um processo provoca uma falha no software de comunicação. 
Ambos os processos devem ser capazes de tolerar as mensagens em falta. O cliente deve tolerar 
uma mensagem de resposta faltando depois de ter enviado uma mensagem de solicitação de 
chamada. Em vez de fazer o usuário esperar para sempre para a resposta, um cliente processo 
poderia usar um tempo limite e, em seguida, informar ao usuário que não tem sido capaz de 
entrar em contato com o servidor. 
Um servidor simples, apenas espera por mensagens de pedido, executa invocações e envia 
respostas. Deveria ser absolutamente imune a mensagens perdidas. Mas, se um servidor 
armazena informações sobre seus clientes que eventualmente pode falhar se os clientes falhar 
sem informar o servidor (de modo que ele pode remover informações redundantes). 
O software de comunicação deve ser concebido para tolerar falhas nos processos de 
comunicação. 
Por exemplo, a falha de um processo não deve causar problemas na comunicação entre os 
sobreviventes processos. 
7. Um processo servidor mantém um objeto compartilhado como o objeto OBJ da questão 
3. Cite vantagens e desvantagens de permitir que requisições dos clientes sejam tratadas 
de forma concorrente pelo servidor. No caso em que as requisições são tratadas 
concorrentemente, dê um exemplo de possível “interferência” que pode ocorrer entre os 
diferentes clientes. Sugira como tal problema poderia ser evitado. 
Para execuções concorrentes - mais taxa de transferência no servidor (particularmente se o 
servidor tem que acessar um disco ou outro serviço) 
Contra - problemas de interferência entre operações simultâneas 
exemplo: 
Um segmento do cliente de lê valor da variável X 
Segmento do cliente do B lê o valor da variável X 
Cliente Um fio de adiciona 1 para o seu valor e armazena o resultado em X 
Cliente fio de B subtrai 1 do seu valor e armazena o resultado em X 
Resultado: x: = X-1; imaginar que X é o saldo de uma conta bancária, e os clientes A e 
B são de crédito de execução e operações de débito, e você pode ver imediatamente que o 
resultado é incorreto. 
Para superar uso interferência alguma forma de controle de concorrência. Por exemplo, 
para uma utilização de servidor Java operações sincronizadas, como crédito e débito. 
8. Um serviço é implementado por vários servidores. Explique por que recursos seriam 
transferidos de um servidor para o outro. 
 
A migração de recursos (objetos de informação) é realizado: para reduzir os 
atrasos de comunicação (colocar objetos em um servidor que está na mesma rede local 
que seus usuários mais freqüentes); para equilibrar a carga de processamento e ou a 
utilização do armazenamento entre diferentes servidores. 
Se todos os servidores de receber todos os pedidos, a carga de comunicação na 
rede está muito aumentada e servidores devem fazer trabalho desnecessário filtrando os 
pedidos de objetos que eles não possuem.

Continue navegando