Buscar

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

Lista de Exercicios de Sistemas Distribuidos 
Universidade Estadual do Ceará (UECE) 
 
Sistemas Distribuídos 
Prof. Dr. André Ribeiro Cardoso Turma 2009.1 
 
• Explique o significado de transparência de distribuição e dê exemplos de diferentes tipos de 
distribuição. 
R- A transparência de distribuição é o fenômeno pelo qual os aspectos da distribuição de um sistema são 
ocultados dos usuários e das aplicações. Exemplos incluem transparência de acesso, de localização, de 
migração, de relocação, de replicação, de concorrência, e de falha. 
 
 
• Por que nem sempre é indicada a implementação do mais alto grau de transparência possível? 
R- Visar o mais alto grau transparência pode conduzir a uma perda considerável do desempenho, de forma a 
usuários não estarem dispostos aceitar. 
 
 
• O que é uma organização virtual e dê uma sugestão de uma possível implementação dessas 
organizações. 
R- Uma organização virtual (OV) define um grupo de usuários / aplicações que têm o acesso a um grupo 
específico de recursos, que podem ser distribuídos através de diferentes computadores, possuído por muitas 
organizações diferentes. De fato, uma OV define quem tem o acesso a que. Isto também sugere que os recursos 
devam manter 
uma conta de usuários juntamente com os respectivos direitos de acesso. Isto pode ser feito através de 
mecanismos de controle de acesso padrão (tais como os bits do rwx em UNIX), embora os usuários convidados 
“guest users” possam necessitar de uma conta especial, o que complica consideravelmente a política de acesso 
definida. 
 
 
• Transparência de distribuição pode ou não estar presente em sistemas pervasivos. Essa declaração 
não é válida para todos os tipos de transparência. Exemplifique. 
R- Considere o caso da transparência de migração. Em muitos sistemas pervasivos, os componentes são móveis 
e necessitam reestabelecer conexões ao moverem-se de um ponto a outro. Tais “handovers” devem ser 
transparentes ao usuário. Da mesma forma, muitos outros tipos de transparência devem ser também suportados. 
Entretanto, o que não deve ser ocultado é um usuário está alcançando possivelmente os recursos que são 
acoplados diretamente ao ambiente atual do usuário. 
 
 
• Sistemas domésticos, sistemas eletrônicos para tratamento de saúde e redes de sensores são exemplos 
de sistemas pervasivos. Amplie a lista com mais exemplos com uma descrição sucinta de cada exemplo. 
R- Há diversos exemplos de sistemas pervasivos. Considere as redes “mesh” sem fio em grande escala nas 
cidades ou vizinhanças que fornecem não só serviços de acesso a Internet, mas que também sirvam de infra-
estrutura para outros serviços (ex. sistema de notícias). Há sistemas de monitoramento do habitat dos animais 
selvagens, sistemas para cadeias eletrônicas onde prisioneiros são monitorados continuamente, sistemas 
 
integrados em grande escala dos esportes, sistemas de escritório que empregam crachás ativos de controle de 
empregados, e assim por diante. 
 
 
• Descreva uma solução para atacar o problema de latência de rede resultante da distância entre um 
servidor e o cliente. 
R- A solução depende de como o cliente é organizado. É possível dividir o código no lado cliente em partes 
menores para que possam ser processadas separadamente (i.e. idéia de threads). Assim, enquanto uma parte do 
código espera a resposta do servidor, outra parte pode ser processada. Ou seja, o cliente pode realizar outro 
trabalho após emitir uma requisição ao servidor. Esta solução substitui de maneira eficaz a comunicação 
cliente-servidor síncrona pela comunicação assíncrona. 
 
 
• Em uma rede de recobrimento estruturada, mensagens são roteadas de acordo com a topologia de 
sobreposição. Cite uma importante desvantagem dessa abordagem. 
R- O problema é conseqüência de links lógicos. É o caso onde dois nós A e B que são vizinhos na rede de 
recobrimento são situados fisicamente distante uma da outra. Consequentemente, o caminho logicamente curto 
entre A e B podem requerer o roteamento de uma mensagem ao longo de um caminho muito longo na rede 
física subjacente. 
 
 
• Cite um argumento técnico interessante para explicar por que a política do toma-lá- dá-cá usada pelo 
Bittorrent não é adequada para compartilhamento de arquivos na Internet. 
R- O argumento é relativamente simples. A maioria de clientes BitTorrent são operados atrás das ligações 
assimétricas tais como fornecido por modem de ADSL ou de cabo. No geral, os clientes são oferecidos uma 
capacidade entrante elevada da largura de banda, mas ninguém espera realmente que os clientes tenham os 
serviços a oferecer. BitTorrent não faz esta suposição, e considera clientes de um servidor colaborativo. Ter 
conexões simétricas é um modo muito melhor para a política “tit-for-tat”. 
 
 
• Como o sistema operacional impede que um processo monopolize um processador? R- Um relógio de 
interrupção gera uma interrupção após um quantum de tempo especificado, e o SO despacha um outro 
processo para executar. O processo interrompido executará novamente quando avançar no topo da lista de 
prontos e um processador ficar disponível novamente. 
 
 
• Teria sentido limitar o número de threads em um servidor? 
R- Sim. Primeiro, threads requerem memória para sua própria pilha. Conseqüentemente, havendo muitas threads o 
consumo de memória pode evitar que o servidor trabalhe corretamente. Outra razão séria é que para um sistema 
operacional, threads independentes tendem a operar de forma caótica. Isso pode dificultar o funcionamento 
estável do sistema de memória virtual, resultando em falhas de paginação e erros de E/S. Assim, havendo 
muitas threads, pode levar a degradação de desempenho em comparação ao caso do uso de única thread (single 
thread). 
 
• Por que serviços de comunicação de nível de transporte frequentemente são inadequados para construir 
aplicações distribuídas? 
R- Eles dificilmente oferecem transparência de distribuição, o que implica numa significante atenção por parte 
dos desenvolvedores na implementação da comunicação e, freqüentemente, levando a soluções proprietárias. 
Como conseqüência, aplicações distribuídas construídas diretamente sobre soquetes são difíceis de serem 
portáveis e de interoperarem com outras aplicações. 
 
 
• Considere um procedimento incr com dois parâmetros inteiros. O procedimento adiciona um a cada 
parâmetro. Agora suponha que ele seja chamado com a mesma variàvel duas vezes, por exemplo, como incr 
(i,i). Se i for inicialmente 0, qual valor ele terà depois se for utilizada chmada por referência? E se for utilizada 
chamada copiar/restaurar? 
R- Se for usada uma chamada por referência, um ponteiro para i é passado para incr. Assim, ele será 
incrementado duas vezes chegando a um resultado final igual a 2(dois). Entretanto, através do cópia/restaura, i 
será duas vezes passado por valor, cada valor inicialmente 0 (zero). Os dois serão incrementados chegando 
a um resultado final 1(um), cada um. Copiados de volta, com a segunda cópia sobrepondo a primeira o 
resultado final será 1(um), e não 2(dois). 
 
 
• C tem uma construção denominada Union, na qual um campo de um registro, denominado Struct em C, 
pode conter qualquer uma de diversas alternativas. Em tempo de execução, não há nenhum modo garantido de 
dizer qual delas está naquele campo. Essa característica de C tem quaisquer implicações para RPC? Explique sua 
resposta. 
R- Se um sistema em tempo de execução não pode informar qual o valor do tipo estará no campo ele não poderá 
empacotar os dados corretamente. Assim, Unions não aceitará RPC a menos que exista uma tag que, de forma não 
ambígua, informe a variante contida no campo. 
 
 
• Um modo de manipular conversão de parâmetro em sistemas RPC é fazer com que cada máquina envie 
parâmetros em sua representação nativa, e a outra faça a tradução, se necessário. O sistema nativo poderá ser 
indicado por um código no primeiro byte. Contudo,uma vez que localizar o primeiro byte na primeira palavra é 
exatamente o problema, isso pode funcionar? 
R- Inicialmente, quando um computador envia o byte 0 (zero), ele sempre chega 0 (zero). Assim, o computador 
destino pode acessar o byte 0 (usando a instrução byte) e o código estará nele. Não importa se se trata de little-
endian ou big-endian. Uma alternativa pode ser colocar o código em todos os bytes da primeira palavra. Então, 
não importando qual byte seja examinado, o código estará lá. 
 
 
• Considere que um cliente chama uma RPC assíncrona para um servidor e, na seqüência, espera até que 
o servidor retorne uma outra RPC assíncrona. Essa abordagem é o mesmo que deixar o cliente executar uma RPC 
normal? 
R- Não. Uma RPC assíncrona retorna um ack para o cliente chamador, significando que depois da primeira 
chamada do cliente, uma mensagem adicional é enviada pela rede. 
 
Da mesma forma, o servidor sabe que sua resposta foi entregue ao cliente. Duas RPCs assíncronas podem 
garantir uma comunicação confiável. 
 
 
• Um protocolo de requisição-resposta é implementado em um serviço de comunicação com falhas por 
omissão para fornecer a semântica de invocação pelo menos uma vez. No primeiro caso, o desenvolvedor 
presume um sistema assíncrono distribuído. No segundo caso, o desenvolvedor presume que o tempo máximo 
para 
a comunicação e a execução de um método remoto é T. De que maneira esta última suposição simplifica a 
implementação? 
R- A semântica de invocação pelo menos uma vez mascara as falhas por omissão, não sendo adequada para o 
serviço proposto. Usar um sistema assíncrono como solução dessa semântica aumenta consideravelmente o 
número de mensagens na rede. Além disso, através dessa semântica, se a operação não for idempotente, corre-
se o risco de sofrermos um efeito colateral grave pela repetição indevida da repetição da operação. Assim, 
atribuindo-se um tempo adequado T de execução remota de um processo, evita- se o aumento de mensagens na 
rede decorrente da primeira solução, chegando-se a uma solução tolerável para o uso do pelo menos uma vez.

Continue navegando