Você está na página 1de 7

Melquisedeque Marcolino da Silva

Lista 01
1.1 Cite cinco tipos de recurso 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. páginas 2, 14
R. Recursos de Hardware:
Disco rígido, pode ser compartilhado em uma rede local para ser acessado por outro
computador na mesma rede;
Impressora, assim como o disco rígido ela pode ser compartilhada em uma rede
local, e se ela tiver conectividade com a internet, pode ser usada remotamente.
Placa de vídeo, as placas de vídeo podem dividir seu processamento para serem
usadas por dois monitores;
Recursos de Software:
Arquivos, os arquivos podem estar na nuvem e podem ser acessados por qualquer
pessoa, desde que tenha acesso a esses arquivos;
Banco de dados, um banco de dados pode ser lido e alimentado por várias pessoas
quase que ao mesmo tempo;

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? Como os relógios
de um grande número de computadores conectados pela Internet poderiam
ser sincronizados? Discuta a precisão desse procedimento. página 2
R. Já que o relógio é síncrono, é possível saber os limites da taxa de derivação dos
relógios, o atraso máximo de transmissão de mensagens e o tempo que leva para
executar cada etapa de um processo, através da técnica de relógios lógicos. O
relógio lógico de Lamport é um contador de software que aumenta a contagem
monotonamente e cujo valor não precisa ter nenhum relacionamento em particular
com qualquer relógio físico. Não existe a noção de relógio global em um sistema
distribuído; portanto, os relógios de diferentes computadores não fornecem
necessariamente a mesma hora. Toda comunicação entre processos é obtida por
meio de troca de mensagens. A comunicação por troca de mensagens em uma rede
de computadores pode ser afetada por atrasos, sofrer uma variedade de falhas e
ser vulnerável a ataques contra a segurança. É impossível fazer a sincronização
através de sistemas assíncronos.
1.3 Considere as estratégias de implementação de MMOG (massively
multiplayer online games) 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? Página 5
R. Vantagem: A arquitetura centralizada ajuda significativamente no gerenciamento
do mundo virtual e a cópia única também diminui as preocupações com a coerência.
Desvantagem: Para suportar isso, a carga é particionada por meio da alocação de
sistemas estelares individuais para computadores específicos dentro do cluster, com
os sistemas estelares altamente carregados tendo seu próprio computador dedicado
e outros compartilhando um computador.
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 desafios
técnicos devem ser superados? página 13
R. Ele deveria se conectar a uma rede Wi-fi, se essa rede fosse uma rede pública
não precisaria de senha, mas se fosse uma rede privada a única forma de se
conectar seria usando a tecnologia WSP.

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 como conceito? páginas 13, 14
R. A arquitetura cliente-servidor precisa de computadores dedicados, já a
computação em nuvem é implementada em clusters de computadores para fornecer
a escala e o desempenho necessários exigidos por tais serviços.

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? páginas 14, 26 Capítulo 1
Caracterização de Sistemas Distribuídos 35
R. Páginas da Web: São exemplos de recursos que são compartilhados. Esses
recursos são gerenciados por servidores Web.
Arquitetura cliente-servidor: O Navegador da Web é um programa cliente (por
exemplo, Firefox ou IE) executado no computador. O servidor Web acessa os
arquivos locais que contêm as páginas da Web e os fornece ao cliente (processos
do navegador).
HTML: É uma linguagem relativamente simples para analisar e processar, mas
confunde apresentação com os dados subjacentes que estão sendo apresentados.
URLs: São localizadores de recursos eficientes, mas não são suficientemente ricos
como links de recursos. Por exemplo, eles podem apontar para um recurso que foi
realocado ou destruído; sua granularidade (como um recurso) é muito grosseira
para muitos propósitos.
HTTP: É um protocolo simples que pode ser implementado com uma pequena
pegada e que pode ser usado em muitos tipos de transferência de conteúdo e
outros tipos de serviço. Sua verbosidade (mensagens HTML tendem a conter muitas
strings) torna ineficaz para passar pequenas quantidades de dados.
HTTP e URLs: São aceitáveis como uma base para a computação cliente-servidor,
exceto que (a) não há forte typechecking (serviços web operam por tipo de
verificação de valor sem apoio do compilador), (b) há a ineficiência que
mencionamos.
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. página 16
R. Assumindo que os protocolos Internet lidam com as diferenças na redes, se
temos hardware diferente é necessário lidar com diferentes representações de
dados entre cliente e servidor. É necessário definir um standard comum para cada
tipo de dados a transmitir entre cliente e servidor.
Se os computadores possuem sistemas operativos diferentes é necessário lidar com
operações e envio e recepção de mensagens diferentes. Sendo as linguagens de
programação diferentes temos diferentes representações para estruturas de dados
como Strings, Arrays, registos.

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. página 17
R. 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.

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, quais outros problemas
surgem? página 18
R.
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. página
19
R. 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 descentralizada. Esse é, ao mesmo servidor não deve ser envolvido
em olhar acima de todo nome. (Uma solução centralizada usaria um único servidor
raiz que mantém um banco de dados local que mapeia partes da informação para
servidores específicos). Alguma 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).

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 as falhas uns dos outros. página 21
R. 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 causadas 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.
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. página
22
R. 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.

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? página 23
R. 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.

1.14 as iniciais URL? Dê exemplos de três diferentes tipos de recursos da


Web que podem ser nomeados por URLs. página 26
R. URL siginifica Uniform Resource Locator (localizador de recurso uniforme). Três
exemplos de recursos que podem usar URLs: um arquivo ou uma imagem, filmes,
som, qualquer coisa que pode ser processado, uma consulta a um banco de dados
ou a um mecanismo de busca.

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. Exemplo de URL HTTP: http://iftm.edu.br/index.php
Principais componentes:
• Antes do “:” define o protocolo; ex: http ("HyperText Transport Protocol").
• A parte entre // e / é o nome do domínio no servidor web. Ex: iftm.edu.br
• O resto (depois de /) refere-se à informação solicitada ao servidor (o recurso) que
está dentro de um diretório usado no servidor web. Ex: o recurso “index.php” está
localizado no diretório raiz do servidor ifpa.edu.br
Quanto à transparência: O nome do host "www" é independente da localização, por
isso temos a transparência do local em que o endereço de um determinado
computador não está incluído. Portanto, a organização pode mover o serviço da
Web para outro computador. Porém, se a responsabilidade de fornecer um serviço
de informações baseado em WWW se deslocar para outra organização, a URL
precisaria ser alterada.