Baixe o app para aproveitar ainda mais
Prévia do material em texto
Problemas propostos (baseados no livro Sistemas Distribuídos – Princípios e Paradigmas) Introdução (Capítulos 1, 2 e 3): 1. Uma definição alternativa para um sistema distribuído é que ele é um conjunto de computadores independentes que dá a impressão de ser um sistema único, ou seja, o fato de ter vários computadores, fica completamente oculto para os usuários. Dê um exemplo em que esta situação viria muito a calhar. 2. Qual é o papel de um middleware em um sistema distribuído? 3. Muitos sistemas de redes são organizados em termos de uma retaguarda e de uma vanguarda. Como as organizações se ajustam à visão coerente que é exigida para um sistema distribuído? 4. Explique o que quer dizer transparência e dê exemplo de diferentes tipos de transparências. 5. Por que as vezes é tão difícil ocultar a ocorrência e recuperação de falhas em um sistema distribuído? 6. Por que nem sempre é uma boa idéia direcionar a implementação com o um alto grau de transparência possível? 7. O que é um sistema distribuído aberto e quais benefícios a abertura proporciona? 8. Discuta sobre a escalabilidade em sistemas distribuídos. 9. O que significa organização virtual? Dê uma sugestão para a implementação dessa organização. 10. Discuta sobre as propriedades associadas a execução de transações. 11. Se um cliente e um servidor forem colocados longe um do outro, podemos ver a latência da rede dominar o desempenho global. Como podemos atacar este problema? 12. Discuta sobre a arquitetura cliente-servidor. 13. Em uma rede de sobreposição estruturada, mensagens são roteadas de acordo com a topologia de sobreposição. Cite uma possível desvantagem dessa abordagem. 14. Faça uma análise comparativa envolvendo abordagens monothreads X multithreads. 15. Teria sentido limitar o número de threads em um servidor? 16. Faça o esboço de um servidor multithread que suporta vários protocolos que usam sockets como sua interface de nível de transporte para o sistema operacional subjacente. Comunicação (Capítulo 4): 17. Em muitos protocolos de camadas, cada camada tem o seu próprio cabeçalho. Certamente seria mais eficiente ter um único cabeçalho à frente de cada mensagem que contivesse todos os controles do que ter todos esses cabeçalhos separados. Por que isto não é feito? 18. Por que serviços de comunicação de nível de transporte frequentemente são inadequados para construir aplicações distribuídas? 19. C tem uma construção denominada Union, na qual um campo de um registro, denominado Struct em C pode conter qualquer uma das diversas alternativas. Em tempo de execução, não há nenhum modo garantido para dizer qual delas está naquele campo. Essa característica de C tem quaisquer implicações para chamadas de procedimentos remotos? Explique sua resposta. 20. Um modo para manipular conversão de parâmetros 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 poderia 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? 21. Em vez de deixar que um servidor registre a si mesmo em um deamon como em DCE, poderíamos também preferir sempre designar a ele a mesma porta. Portanto, esta porta poderia ser usada em referências a objetos no espaço de endereço do servidor. Qual a principal desvantagem desse esquema? 22. Seria útil fazer também distinção entre RPCs dinâmicas e estáticas? 23. Suponha que você só possa usar primitivas de comunicação transientes, entre elas, apenas uma primitiva assíncrona receive. Como você implementaria primitivas para comunicação transiente síncrona? 24. Suponha que você dispõe apenas de primitivas de comunicação transiente síncrona. Como você implementaria primitivas para comunicação assíncrona? 25. No texto do livro do Tanenbaum, afirma-se que, para iniciar automaticamente um processo a fim de buscar mensagens de uma fila de entrada, frequentemente é utilizado um deamon que monitora a fila de entrada. Descreva uma forma de implementação alternativa que não utiliza um deamon. 26. Tabelas de roteamento no WebSphere da IBM e em muitos outros sistemas de enfileiramento de mensagens são configuradas manualmente. Descreva um modo de fazer isso automaticamente. 27. Com a comunicação persistente, um receptor geralmente tem o seu próprio buffer local no qual mensagens podem ficar armazenadas quando o receptor não estiver em execução. Para criar tal buffer, talvez seja preciso especificar o seu tamanho. Cite um argumento a favor e outro contra a especificação do tamanho. 28. Como você poderia garantir um atraso máximo fim-a-fim quando um conjunto de computadores estiver organizado em um anel (lógico ou físico)? Sincronização 29. Cite possíveis fontes de atrasos que podem ser introduzidas entre a transmissão da hora em broadcast WWV e o ajuste, pelos processadores, de seus relógios internos em um sistema distribuído. 30. Considere o comportamento de duas máquinas em um sistema distribuído. Ambas têm relógios que devem pulsar 1.000 vezes por milesegundo. Um deles realmente pulsa a esta taxa, mas o outro pulsa somente 990 vezes. Se as atualizações UTC chegam uma vez por minuto, qual será a máxima defasagem dos relógios? 31. Quando um nó sincroniza seu relógio com o de outro nó, em geral é uma boa idéia também levar em consideração medições anteriores. Por quê? Dê um exemplo de uma situação onde as leituras anteriores devem ser levadas em conta. 32. Para conseguir multicast totalmente ordenado com marcas de tempo Lamport, é estritamente necessário que cada mensagem seja reconhecida? 33. Considere uma camada de comunicação na qual mensagens são entregues somente na ordem em que as mensagens foram enviadas. Dê um exemplo no qual, até mesmo essa ordenação é desnecessariamente restritiva. 34. Muitos algoritmos distribuídos requerem a utilização de um processo coordenador. Até que ponto esses algoritmos são considerados distribuídos? 35. Na abordagem centralizada da exclusão mútua – Figura 6.14 -, ao receber uma mensagem de um processo que está liberando o seu acesso exclusivo aos recursos que esta usando, o coordenador normalmente concede permissão ao primeiro processo da fila. Cite outro algoritmo possível para o coordenador 36. Ainda com relação a Figura 6.14, considere que o corrdenador caia. Isso sempre derruba o sistema? Se não derrubar, sob quais circunstâncias isso acontece? Há algum modo de evitar o problema e fazer com que o sistema seja capaz de tolerar quedas de cordenador? 37. O algoritmo distribuído (Ricart e Agrawala) apresenta o seguinte problema: se um processo falhou e não responde a uma requisição de um outro processo para acessar um recurso, a falta de resposta será interpretada como uma recusa de permissão. Sugerimos que todas as requisições sejam respondidas imediatamente para facilitar a detecção de processos que falharam. Há alguma circunstância em que este método seja insuficiente? Discuta. 38. Um sistema distribuído pode ter vários recursos independentes. Imagine que o processo 0 quer acessar o recurso A e o processo 1 quer acessar o recurso B. Poderia o algoritmo de Ricart e Agrawala resultar em deadlock? 39. Suponha que dois processos detectem a morte do coordenador simultaneamente e ambos decidam convocar eleições que utilizem o algoritmo do Valentão. O que acontecerá?
Compartilhar