UTFPR/Curitiba - Especialização em Teleinformática Sistemas Distribuídos (Prof. Tacla) EXERCÍCIOS Sistemas distribuídos * consultar slides 0010 1. Quais as diferenças entre um sistema distribuído e um sistema de computação paralela. 2. Transparência é um conceito fundamental em SDs. Dê exemplos de transparência em SDs. Grids e Clusters * Consultar links fornecidos nos slides responder as questões abaixo. O link do Condor contém informações mais detalhadas: http://www.cs.wisc.edu/condor 3. Sobre clusters, marque V ou F: ( ) são feitos normalmente com uma coleção de máquinas homogêneas em termos de software e hardware. ( ) é formado normalmente por uma coleção de máquinas geograficamente dispersas. ( ) é formado normalmente por uma coleção de máquinas fisicamente próximas. ( ) é bastante utilizado na execução tarefas complexas que podem ser decompostas em tarefas menores cujos resultados parciais podem ser obtidos de forma independente e, posteriormente, coletados para compor o resultado final. ( ) é sinônimo de grid. 4. O que é High-Throughput computing? 5. O que é High-Performance computing? 6. Quais tarefas realiza um software de gerenciamento de carga (workload management)? 7. Cite exemplos de aplicações que se beneficiam de grids e clusters. Arquiteturas de SDs *consultar slides 0020 8. Cite 2 exemplos de sistemas que rodam numa arquitetura cliente-servidor e classifique a mesma em mono-servidor, multi-servidores (em cadeia, replicados), com código móvel ou código móvel tipo push. 9. Diferencie arquiteturas cliente-servidor de arquiteturas peer-to-peer em relação aos papéis desempenhados pelos componentes, funcionamento do sistema e canais de comunicação entre componentes. 10. Qual arquitetura você utilizaria para implementar um sistema distribuído para atender a seguinte situação: Uma fábrica é composta por três unidades de igual capacidade produtiva. Cada unidade está numa cidade e possui seu próprio sistema de controle de produção. No início do dia, a matriz passa para todas as unidades a quantidade total a ser produzida no dia. As filiais, ao longo do dia, se comunicam para não ultrapassar ou ultrapassar o mínimo possível a produção total indicada pela matriz. A cada 2 horas as unidades devem estar cientes das quantidades produzidas pelas outras. Assim, uma unidade pode estimar quanto produzir conhecendo a quantidade produzida até o momento pelas outras unidades. As unidades devem comunicar a matriz que a meta foi alcançada ao atingirem a meta de produção diária. Exemplo: ‒ Matriz passa total a ser produzido no início do dia = 100. ‒ As unidades estimam produzir 33 produtos (100/3) Passadas duas horas, unidade 1 produziu 5, unidade 2, 6 e unidade 3, 4, totalizando 15 produtos. Restam, portanto, 85 a serem feitos. Cada uma das unidades faz nova estimativa até o final do dia: 85/3 = 28 produtos. ‒ Computação em Nuvem LEITURA E RESENHA DE ARTIGO: A VIEW OF CLOUD COMPUTING * referência bibliográfica Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy Katz, Andy Konwinski, Gunho Lee, David Patterson, Ariel Rabkin, Ion Stoica, and Matei Zaharia. 2010. A view of cloud computing. Commun. ACM 53, 4 (April 2010), 50-58. * link para o artigo: Doi:10.1145/1721654.1721672 http://doi.acm.org/10.1145/1721654.1721672 * A FAZER: Ler o artigo acima e fazer uma resenha, salientando os pontos vistos em sala de aula relativos à arquitetura de sistemas distribuídos, principalmente, comparar CLOUD COMPUTING com HIGHTHROUGHPUT COMPUTING e HIGH-PERFORMANCE COMPUTING Programação distribuída * consultar slides 0030 11. O que são threads? 12. Com base nos exemplos abaixo, explique as operações YIELD, SLEEP e JOIN que podem ser feitas sobre threads: http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JThreads/JThreadContadoras i) Baixe o arquivo JThreadContadoras.jar em uma pasta ii) Execute o cmd e se posicione na pasta iii) Execute no prompt: java –jar JThreadContadoras.jar no exemplo das threads contadoras, examine o funcionamento do YIELD fazendo: java –jar JThreadContadoras.jar YIELD no exemplo das threads contadoras, examine o funcionamento do SLEEP fazendo java –jar JThreadContadoras.jar NO 2000, sendo que 2000 significa 2000ms. no exemplo das threads contadoras, examine o funcionamento do JOIN fazendo java –jar JThreadContadoras.jar NO 2000 JOIN 13. Observe a prioridade entre threads no exemplo das threads contadoras java –jar JThreadContadoras.jar OFF 0 OFF 1 10 1 é a prioridade da primeira thread 10 é a proridade da segunda thread 14. Considere um simulador de corridas de fórmula 1 que simula uma disputa entre dois pilotos: Schumacker e Barrichelo. Cada carro funciona de forma independente O tempo de cada volta é dado por um valor randômico. O programa deve esperar por este tempo sem fazer nada para então iniciar a próxima volta Ao final da corrida (quando os dois carros completam 5 voltas), o simulador mostra o tempo acumulado para cada um dos pilotos e aponta o vencedor ou empate. Responda: que comandos da linguagem Java você utilizaria para resolver cada um dos itens acima? Problemas de concorrência *Slides 0030 15. O que é seção/região crítica de um processo? 16. Explique o que são os problemas de leitura suja e atualização perdida com base no exemplo que segue. Suponha que há duas entradas controladas por roletas. Cada roleta conta individualmente o número de passantes e atualizam um contador central conforme a figura. Rode o .jar disponível no link abaixo e observe que o valor do contador central não bate com a soma dos contadores individuais. Dê uma explicação contextualizada neste exemplo. http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JThreads/JRaceConditionRoletas 17. Sobre programação concorrente, marque V ou F: (___) Vivacidade é uma propriedade desejável para os programas multithread. (___) Deadlock (impasse) é solucionável com algoritmos de exclusão mútua. (___) Leitura suja é um problema que pode ocorrer quando dois processos executando de forma concorrente lêem uma área de memória compartilhada num momento indevido. (___) Atualização perdida é um problema que pode ocorrer quando um processo seqüencial esquece de salvar uma alteração por um erro de lógica de programação. (___) Starvation (inanição) significa que um processo, embora vivo, nunca consiga ganhar acesso uma região crítica (recurso) por ser eternamente postergado. (___) Exclusão mútua é uma propriedade desejável para recursos críticos e significa que dois ou mais processos podem acessar o recurso ao mesmo tempo. (___) Deadlock ocorre quando os processos de um SD entram numa espera eterna por um ou mais recursos que jamais obterão. (___) Um banco de dados que não garanta transações atômicas (acesso exclusivo a um objeto para atualizá-lo) pode produzir resultados errados se duas transações tentarem modificá-lo ao mesmo tempo. (___) Threads são processos 18. Liste três técnicas ou mecanismos que garantem acesso exclusivo a um recurso crítico. 19. Compare o tempo de execução dos programas da roleta. O primeiro não tem controle de exclusão mútua e, o segundo, tem. JAVARepositorio\JThreads\JRaceConditionRoletas JAVARepositorio\JThreads\JRaceConditionRoletasSol 20. Para solucionar o problema de deadlock dos filosófos basta coordenar suas ações (não é preciso nenhum algoritmo específico). Ou seja, basta que um e apenas um deles pegue os pauzinhos na ordem inversa dos demais. Verificar se a solução apresentada funciona para 4 filósofos sendo o f2 aquele que pega na ordem invertida. Represente em um diagrama de sequência um cenário na qual os filosófos tentam pegar os pauzinhos ao mesmo tempo. 21. Utilizando o editor de redes de Petri abaixo, construa um modelo para coordenação de acesso a um buffer (problema produtor-consumidor) onde há 3 produtores, um buffer com capacidade de 7 mensagens e um consumidor. http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/java/Guth/ SOCKETS *slides 0050 22. É CORRETO afirmar que um sistema construído com base em SOCKETS UDP é indicado para: ( ) Difusão de fluxo contínuo de áudio em tempo real ( ) Videoconferência ( ) FTP ( ) Difusão de fluxo contínuo de vídeo tempo real. ( ) Chat 23. Sobre SOCKETS UDP, marque V ou F: ( ) ora pode enviar dados pelo TCP ora pelo UDP. ( ) envia datagramas sem manter o estado da conexão. ( ) envia datagramas mantendo o estado da conexão. ( ) pode funcionar em modo conectado, enviando dados somente ao socket UDP ao qual ele se conectou. ( ) Pode funcionar em modo promíscuo, mandando dados a qualquer outro socket UDP. 24. Sobre sockets TCP, marque V ou F: ( ) utilizam o conceito de stream (fluxo contínuo) de dados. ( ) o programador não precisa se preocupar com o tamanho das mensagens a serem enviadas, pois o TCP se encarrega de segmentar o stream do buffer de saída. ( ) implementam um canal de comunicação confiável onde os datagramas chegam na ordem correta. ( ) podem ser utilizados para fazer multicast. ( ) em relação aos sockets UDP, apresentam maior overhead de comunicação notadamente devido ao handshake de início de comunicação. 25. 4. Um sistema construído com base em sockets de multicast é indicado para (marque V ou F): ( ) Difusão de fluxo contínuo de áudio em tempo real ( ) Videoconferência ( ) FTP ( ) Difusão de fluxo contínuo de vídeo tempo real. ( ) Chat 26. Faça uma tabela comparativa com os métodos disponíveis aos programadores para construírem na linguagem JAVA sistemas distribuídos com sockets TCP, UDP e MULTICAST. SOCKET UDP TCP MULTICAST 27. Em linhas gerais, como deve funcionar um programa servidor capaz de atender até 3 clientes simultaneamente? 28. Como você faria para que uma comunicação interprocessos por sockets UDP tratasse perda de datagramas para se tornar mais confiável? Sistemas multiagentes x Web Services 29. Ler o artigo e fazer uma resenha, salientando os pontos vistos em sala de aula: WEB SERVICES FROM AN AGENT PERSPECTIVE, disponível em: http://dx.doi.org/10.1109/MIS.2008.37 (ACESSÍVEL SOMENTE NA UTFPR ou através do proxy da UTFPR). Middleware *slides 0070 30. O que é middleware em sistemas distribuídos (basicamente, qual a sua função)? 31. O que é invocação remota de métodos (RMI) e como funciona?