Você está na página 1de 7

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.

Hardware: discos, impressora, memória ram, processador, switch.


Software: arquivos, banco de dados, protocolos de comunicação, funções do sistema
operacional, IP.

Exemplos:
- Compartilhamento de impressora entre vários computadores em um escritório;
- Memória principal de uma máquina que é compartilhada por todos os processadores
através de uma barramento que os interliga;
- Compartilhamento de documentos no google docs.

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.

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 monotonicamente 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?

Vantagem: Utilizar uma arquitetura cliente-servidor na qual uma única cópia do


estado do mundo é mantida em um servidor centralizado e acessada por programas clientes
em execução nos consoles ou em outros equipamentos dos jogadores. 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. Assim, o objetivo é garantir resposta
rápida por meio da otimização de protocolos de rede e também para os eventos recebidos.
Desvantagem: Se o servidor central cair não teria outro para substituí-lo.

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?

Este usuário poderia se conectar a uma WIFI, e receber informações sobre este local
devido ao provedor desta WIFI inserir tais informações na rede. Aplicativos de
reconhecimento de localização também podem dar essas informações.
Desafios:
- O usuário deve executar um programa em seu dispositivo que escuta estas
URLs, dando controle suficiente, sem que elas estejam inundadas por URLs
indesejadas;
- Os meios de propagar a URL (por exemplo, infravermelho ou uma LAN sem fio
802.11) deve ter um alcance que corresponde à propagação física do próprio
local.
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?

O modelo básico de funcionamento da internet é o chamado cliente/servidor, onde


existe uma máquina central que tem armazenado os documentos que os usuários desejam
ver e estes, por sua vez, são os chamados clientes.
A computação em nuvem é a distribuição de serviços de computação – servidores,
armazenamento, bancos de dados, redes, software, análises, inteligência e muito mais pela
Internet (“a nuvem”), proporcionando inovações mais rápidas, recursos flexíveis e economia
na escala. Você normalmente paga apenas pelos serviços de nuvem que utiliza, ajudando a
reduzir os custos operacionais, a executar sua infraestrutura com mais eficiência e a
dimensionar conforme as necessidades da sua empresa.

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?

Uma página web é qualquer documento que faça parte de um sítio web e que costuma
conter ligações (igualmente chamadas hiperligações ou ​links​) para facilitar a navegação
entre os conteúdos.
HTML: É uma linguagem relativamente simples para analisar e processar, está disponível em
diversas plataformas e sua performance é ótima em PC’s, dispositivos móveis e tablets, mas
confunde apresentação com os dados subjacentes que estão sendo apresentados.
URL: O objetivo de um URL é identificar um recurso. Os navegadores examinam os URL’s
para acessar os recursos correspondentes. Às vezes, o usuário digita um URL no navegador.
Mais comumente, o navegador pesquisa o URL correspondente quando o usuário clica em
um link, quando seleciona um URL de sua lista de bookmarks ou quando o navegador busca
um recurso incorporado em uma página Web, como uma imagem.
A desvantagem é que não são suficientemente ricos como links de recursos.
HTTP: São protocolos simples de serem implementados, mas apesar de serem dados
sensíveis, eles são tratados de forma textual, já que o HTTP é um protocolo baseado em
texto. Dessa forma, os dados que são enviados podem ser acessados no meio do tráfego,
prejudicando muito a segurança da informação.

HTTP e URLs são convenientes como uma base para a computação cliente-servidor.

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.

A heterogeneidade se aplica aos seguintes aspectos:


- Redes;
- Hardware de computador;
- Sistemas Operacionais;
- Implementações de diferentes desenvolvedores.

Em​ redes​, os protocolos já lidam com suas diferenças.


Se temos ​hardware diferente é necessário lidar com diferentes representações de dados
entre cliente e servidor. Os tipos de dados, como os inteiros, podem ser representados de
diversas maneiras em diferentes tipos de hardware; por exemplo, existem duas alternativas
para a ordem em que os bytes de valores inteiros são armazenados: uma iniciando a partir
do byte mais significativo e outra, a partir do byte menos significativo. Essas diferenças na
representação devem ser consideradas, caso mensagens devam ser trocadas entre
programas sendo executados em diferentes hardwares.
Se os computadores possuem ​sistemas operacionais diferentes, é necessário lidar com
operações de envio e recepção de mensagens diferentes, mesmo que todos os
computadores na internet precisem incluir uma implementação dos protocolos Internet,
nem todos fornecem, necessariamente, a mesma interface de programação de aplicativos
para esses protocolos.
Os programas escritos por ​diferentes desenvolvedores não podem se comunicar, a menos
que utilizem padrões comuns; por exemplo, para realizar a comunicação via rede e usar uma
mesma representação de tipos de dados primitivos e estruturas de dados nas mensagens.
Para que isso aconteça, padrões precisam ser estabelecidos e adotados. Assim é o caso dos
protocolos Internet.

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

• 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.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.

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 dever 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).

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.

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 deter 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 poder e mover 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.

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.

Para execuções concorrentes - mais taxa de transferência no servidor (particularmentes e 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?

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 frequentes);
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 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

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

Você também pode gostar