Sistemas distribuídos Grids e Clusters Arquiteturas - DAINF

Propaganda
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?
Download