Baixe o app para aproveitar ainda mais
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.
Compartilhar