Buscar

Atividade Pratica Sistemas Distribuídos - 2020 (Nota 100)

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

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

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ê viu 3, do total de 7 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

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

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ê viu 6, do total de 7 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

Prévia do material em texto

ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 1 
Responda as questões de 1 até 32 na própria folha, O aluno pode optar por não responder até 2 (duas 
questões do questionário. Observação a resposta deve estar na cor vermelha. 
 
1. No estudo dos Sistemas Operacionais conhecemos o funcionamento de Programas, Processos e 
Threads. Estes são aspectos de fundamental importância para os sistemas distribuídos. Ao que 
corresponde um PROCESSO? 
O processo é a execução das instruções contidas no programa. Este interage com outras 
entidades, ou seja, comportamento dinâmico. 
 
2. A Thread é unidade principal utilizada pelos gerenciadores de tarefas modernos. Assim, é 
fundamental que o desenvolvedor conheça o fluxo de vida de uma thread, para que possa 
manipulá-las com maior acurácia. Descreva a sequência correta dos estados possíveis de uma 
THREAD em UM estado EXECUTANDO. 
Uma Thread em “Executando” está suscetível a passagem aos estados “Terminada”, “Pronta” ou 
“Suspensa”. 
 
3. Os cinco estados possíveis de uma Thread são Nova, Pronta, Executando, Suspensa, Terminada, 
e a transição entre estes estados pode ser realizada por métodos, como o método sleep(t), por 
exemplo. O que fazem os métodos abaixo? 
 wait(): Este método deixa a Thread travada até receber uma notificação; 
 sleep(t): Bloqueia a Thread atual pelo tempo determinado através do método, onde “t” 
está em milissegundos; 
 notify(): Envia notificação às threads suspensas para liberação da trava; 
 start(): Assimila e separa os recursos necessários para a Thread e invoca o método run(); 
 yield(): Este método suspende a Thread atual liberando recursos do Processador para 
execução de outra Thread que possa estar em espera. 
 
4. Quando desenvolvemos um programa em Java estamos utilizando threads, mesmo que não seja 
de forma explicita. Absolutamente todas as aplicações em Java utilizam thread. Considerando 
isso, o que é o método main? E a classe Timer? 
O método main é um tipo de thread denominado de Thread implícita. Este método indica ao 
compilador onde a Thread principal deve iniciar a execução. A classe Timer também é uma 
Thread implícita que funciona para definição de um cronômetro. 
 
5. Uma forma de implementar uma thread é utilizar o conceito de herança para criar uma nova 
classe que herde os comportamentos definidos na classe Thread. Com base nessa afirmação, 
como criamos uma thread com a classe Thread? O que acontece com o método run? 
Quando criamos uma thread com a classe “Thread”, é preciso também criar o método Run() 
dentro da thread com as instruções desejadas. O Método Run() será executado 
automaticamente quando a thread for inicializada. 
 
6. Sistemas Distribuídos (SD) são classificados como uma coleção de computadores 
independentes que aparentam ao usuário ser um computador único, e a transição de um 
sistema centralizado para um sistema distribuído apresenta quatro principais desafios 
intrínsecos. Quais são eles? 
Heterogeneidade, falhas, concorrência e ausência de relógio global. 
 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 2 
 
7. A comunicação entre os nós de um SD é realizada através de mensagens. Para enviar uma 
mensagem utilizando os protocolos padrões de internet, precisamos basicamente de duas 
informações: endereço da máquina e a porta. No Java a classe InetAddress 
(java.net.InetAddress) abstrai endereços de rede [13]. Quais são os principais objetivos dessa 
classe? 
Encapsular um nome ou endereço. 
 
8. Em sistemas distribuídos, cada nó é responsável por executar um ou mais processos que se 
comunicam para atingir um determinado objetivo. Assim, a comunicação entre processos 
(Interprocess Comunication – IPC) normalmente é composta entre um par de processos – 
remetente e destinatário. Explique como ocorre essa comunicação. 
Um processo remetente envia uma sequência de bytes para um processo destino e este recebe 
a mensagem do remetente. Essa comunicação pode ser síncrona ou assíncrona. Na primeira o 
processo remetente fica bloqueado até que a mensagem enviada ao processo destino seja 
respondida, já na segunda forma o processo envia a mensagem de bytes e continua sua 
execução. 
 
9. Para estabelecer o fluxo de comunicação entre os processos é utilizado um Socket de rede, 
sendo que atualmente praticamente todas as comunicações são baseadas em Sockets. O que 
são os sockets? Como são compostos? Qual é a relação entre sockets e mensagens? 
Sockets são definidos como pontos finais ou “endpoints” em canal de comunicação. Os sockets 
são gerenciados pela camada de transporte e são compostos de endereços locais (número da 
porta de comunicação da camada de transporte) e endereço global que se refere ao endereço 
do computador (host) da rede. Os sockets são responsáveis pela conexão para transmissão de 
mensagens dos processos através do protocolo TCP/IP. 
 
10. O UDP (User Datagram Protocol) é um protocolo simples. Quando uma mensagem (datagrama) 
é enviada, o remetente não tem conhecimento se a mensagem realmente chegou no 
destinatário. Ou seja, não tem garantia de entrega de mensagem. Cite vantagens e 
desvantagens dos sockets UDP. 
Como vantagens podemos citar que para determinadas aplicações onde a perda de pacotes é 
pouco impactante, e uma otimização do consumo da rede sendo a prioridade, este protocolo é 
uma melhor abordagem, uma vez que o mecanismo característico possui uma baixa latência. A 
principal desvantagem deste protocolo é que os pacotes entregues não são validados, o que 
pode causar perda de dados e mal funcionamento de pacotes entregues comprometendo a 
comunicação. Uma das melhores aplicações deste recurso seriam ferramentas de 
teleconferência, mídia e streaming (recursos que não necessariamente dependem da qualidade 
dos dados transferidos para comprometer completamente a funcionalidade). 
 
11. Para implementar uma solução baseada em sockets UDP, é preciso utilizar duas classes: 
DatagramPacket e DatagramSocket. Com funcionam essas classes? 
O DatagramPacket é usado para encapsular a mensagem. Esse pacote é um datagrama UDP, 
sendo tanto enviado quanto recebido neste formato, porém existe uma diferença nos 
parâmetros de envio e de recepção. Para envio, precisamos determinar quatro parâmetros, o 
conteúdo da mensagem, o tamanho desta, o endereço IP de destino e a porta de destino. O 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 3 
servidor designado nesta comunicação precisa ter um pacote alocado para receber este pacote 
enviado pelo remetente, assim não sendo necessário Endereço IP e porta. 
 
O DatagramSocket é um socket UDP. Quando utilizado para estabelecer a comunicação, 
podemos definir a porta de comunicação ou não, sendo que na segunda forma a primeira porta 
disponível será escolhida. Existem dois métodos de uso deste tipo de classe, o método send e 
receive para envio e recepção respectivamente. No método send não temos princípio 
bloqueante, sendo assim, o processo irá enviar a mensagem (DatagramPacket) e continuará 
sua execução. Entretanto no método receive temos ação bloqueante que deixará o processo 
esperando a recepção da mensagem, sendo possível determinar um tempo limite de espera que 
lançará uma exceção caso não receba a mensagem no tempo estipulado. 
 
12. Sistemas distribuídos baseados no modelo cliente/servidor são intuitivos e facilmente 
implementados por meio da utilização de sockets. O modelo cliente/servidor permite a 
disponibilização de sistemas pelas organizações, automatizando um modelo de negócio. 
Descreva esse modelo. 
É um modelo que distribui tarefas entre fornecedores de serviços. Os clientes desta arquitetura 
são os que requisitam os serviços e os servidores são os que fornecem aos clientes. 
 
13. Em sistemas distribuídos construídos no modelo cliente/servidor o acoplamento pode se 
tornar um problema para o sistema em produção. Quando existe uma alteração no sistema 
acoplado, essa frequentemente afeta todos os outros sistemas. Apresente as característicasdestes sistemas. 
Sistemas acoplados são sistemas que funcionam sobre recursos compartilhados, 
principalmente memória e processamento. Isso causa uma interdependência entre os sistemas 
e por isso todos podem ser afetados. 
 
14. Podemos definir um serviço como sendo algo útil que um provedor faz para um consumidor. 
Essa definição, apesar de simples, traz alguns elementos importantes: provedor e consumidor, 
sendo que o provedor realiza uma ação útil para um consumidor. Relacione e descreva as três 
características dos serviços. 
Essa definição pode ser relacionada com a característica de modelos cliente/servidor para 
sistemas distribuídos. Neste caso temos um servidor que fornece recursos ao cliente que 
requisitou ao servidor. Os serviços possuem 3 principais características: 
 O contrato que especifica o serviço acordado, suas regras e características; 
 A interface definindo a forma de acesso do cliente ao serviço contratado; 
 A implementação que é um recurso escondido; 
 
15. A Arquitetura Orientada a Serviços ou SOA - Service Oriented Architecture - é uma arquitetura 
de sistemas cujo princípio fundamental prega que as funcionalidades dos sistemas devem ser 
disponibilizadas na forma de serviços. O que é um serviço para a SOA? 
É um componente de um sistema que representa uma funcionalidade de um negócio. 
 
16. Sistemas distribuídos baseados no modelo cliente/servidor são intuitivos e facilmente 
implementados por meio da utilização de sockets. O modelo cliente/servidor permite a 
disponibilização de sistemas pelas organizações, automatizando um modelo de negócio. Sobre 
este modelo de sistemas distribuídos podemos afirmar que: 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 4 
 
 
a) O modelo cliente/servidor tem como objetivo descentralizar os dados e recursos de 
processamento. 
 
b) Esse modelo pode ser composto de um ou mais computadores que atuam como servidores, 
os quais disponibilizam seus recursos para os demais. 
 
c) O desenvolvimento dessas duas partes (cliente e servidor) é feita de maneira acoplado, e 
esse acoplamento pode tornar-se um problema. 
 
d) Um problema recorrente em sistemas cliente/servidor tradicionais está relacionado com a 
heterogeneidade. 
 
e) Todas as alternativas apresentadas estão corretas. 
 
17. Em sistemas distribuídos construídos no modelo cliente/servidor o acoplamento pode se 
tornar um problema para o sistema em produção. Quando existe uma alteração no sistema 
acoplado, essa frequentemente afeta todos os outros sistemas. Analise as afirmativas a seguir 
classificando-as como (F) Falsas ou (V) Verdadeiras: 
 
(V) Geralmente o desenvolvedor deve modificar o servidor para adequá-lo à uma mudança 
nos negócios, e o cliente também deve ser modificado para adequar-se a essa mudança. 
 
(V) O alto acoplamento dos sistemas e a falta de interoperabilidade são motivos para um 
dos maiores problemas da TI: a falta de alinhamento dos negócios com a TI. 
 
(V) A falta de alinhamento pode ocorrer por que as mudanças nos processos de negócios 
são mais velozes que as mudanças de TI. 
 
(F) A Arquitetura Orientada a Serviços visa dar maior agilidade às mudanças, reduzindo o 
acoplamento e a interoperabilidade. 
 
18. Podemos definir um serviço como sendo algo útil que um provedor faz para um consumidor. 
Essa definição, apesar de simples, traz alguns elementos importantes: provedor e consumidor, 
sendo que o provedor realiza uma ação útil para um consumidor. Todos os serviços possuem 
pelo menos três características, descritas a seguir: 
 
I. O contrato, que é uma especificação do que o serviço oferece, com suas características e 
regras. 
II. A interface, que define como um consumidor pode utilizar e acessar um serviço. 
 
III. A implementação, que define como um provedor pode prover um serviço. 
 
IV. A implementação, que é um tipo de recurso escondido - como uma caixa preta. 
 
Assinale a única alternativa que apresenta apenas as afirmativas corretas: 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 5 
 
a) I e II. 
b) I, III e IV. 
c) I, II e III. 
d) I, II e IV. 
e) II, III e IV. 
 
19. Todos os serviços possuem um provedor e um consumidor, e três características básicas, o 
Contrato, a Interface e a Implementação, sobre as quais podemos afirmar que: 
 
I. O contrato e a interface são visíveis para o mundo, enquanto a implementação é um 
recurso escondido, como uma caixa preta. 
II. O contrato e a interface são orientados para o provedor, enquanto a implementação é 
orientada para o consumidor. 
III. Os detalhes do contrato e da interface são importantes para o consumidor, enquanto os 
detalhes da implementação não são. 
IV. Os detalhes do contrato e da interface são importantes para o provedor, enquanto os 
detalhes da implementação não são. 
 
Assinale a única alternativa que apresenta apenas as afirmativas corretas: 
 
a) I e II. 
b) I e III. 
c) II e III. 
d) II e IV. 
e) III e IV 
 
 
SEGUNDA PARTE 
 
20. A sincronização de relógios é um desafio interessante em sistemas distribuídos. Em inúmeras 
aplicações é preciso saber em que determinado horário um evento ocorreu. Porque em um 
sistema distribuído não é possível simplesmente considerar o horário da máquina em que o 
sistema está hospedado como verdade absoluta? 
Porque cada máquina do sistema distribuído possui seu relógio definido pela oscilação e 
frequência do próprio circuito (cristal do processador). Isso causa essa discrepância entre os 
relógios das máquinas. 
 
21. A sincronização de relógios é um problema clássico da computação. Diversos algoritmos foram 
propostos para solucionar esse problema. O algoritmo de Christian foi um dos pioneiros. O 
algoritmo considera o relógio físico para realizar a sincronização. Descreva este algoritmo. 
Neste algoritmo existe um servidor de tempo para as demais máquinas, denominado 
“Autoridade”. Este sincronizará o tempo dele com as demais máquinas via rede. Também será 
considerado qualquer atraso (delay) na sincronização do tempo enviado pelo servidor, 
corrigindo, então, a hora realmente enviada por ele. 
 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 6 
22. Com base no algoritmo de Christian, avalie e resolva a seguinte situação: uma máquina M envia 
uma mensagem para o servidor de tempo solicitando a hora correta. O servidor responde com 
uma mensagem s, contendo a informação solicitada. Quando r é enviada, o relógio de M marca 
3004, e quando s é recebida o relógio de M marca 3050. Considerando que o servidor consome 
um tempo de 8 entre o recebimento da mensagem e o envio da resposta para M, para qual 
valor M deve ajustar o seu relógio, se o servidor respondeu como hora atual o valor 3035? 
D = (3050-3004-8)/2. T = 3035 + D. 
 
Logo, 3054. 
 
23. Com base na proposta de solução do problema de sincronismo de relógio usando o algoritmo 
de Christian, o que acontece quando um determinado processo (cliente) solicita o horário ao 
servidor? E o que acontece quando o cliente recebe a resposta do servidor? 
O servidor responde ao cliente com a hora atual do servidor. O cliente, por sua vez, recebe a 
hora do servidor e ajusta seu relógio para a hora recebida do servidor acrescida do tempo 
médio de resposta do servidor. 
 
24. Qual é o resultado, para o programador, do uso de Chamada Remota de Procedimento (Remote 
Procedure Call, RPC), utilizada principalmente em linguagens procedurais (C, Delphi, etc.) e de 
Invocação Remota de Métodos (Remote Method Invocation - RMI), utilizada em linguagens 
orientadas a objeto (Java, C++, C#)? 
O uso das técnicas RPC e RMI para o programador são transparentes, ou seja, se comportam 
como na chamada de métodos locais. 
 
25. Quais são os tipos de sockets usados pela Chamada Remota de Procedimento (Remote 
Procedure Call - RPC)? 
O RPC não possui uma especificação para um tipo de protocolo apenas. Você pode configurar a 
comunicação dos sockets por exemplo como UDP ou TCP. Entretanto, devido à característica 
do RPC nacamada de aplicação que não implementa uma forma de confiabilidade, seria 
recomendado uso de TCP para comunicação pois desta forma teríamos uma confiabilidade 
feita através da camada de transporte. Além disso existem diversas outras alternativas para 
confiabilidade através da própria camada de aplicação. 
 
26. Quais boas práticas são recomendadas para quando estamos trabalhando com o RMI? 
Para o servidor associar um objeto a um nome é recomendável utilizar o método rebind. Este 
método associa um nome a um objeto, desta forma, caso o nome já esteja registrado, o rebind o 
atualizará. Outro ponto é serializar e desserializar os objetos por meio de rede. 
 
27. Qual é a relação entre Arquitetura Orientada a Serviços (Service Oriented Architecture - SOA) e 
Web Services? 
Os Web Services são mecanismos que utilizam das definições e conceitos contidos no SOA. 
 
28. Quais são os problemas da tecnologia Chamada Remota a Procedimentos (RPC) que os web 
services pretendem resolver? 
Alto acoplamento e baixa interoperabilidade. 
 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 7 
29. Com relação à capacidade, qual é a diferença entre a computação “tradicional” e a computação 
em nuvem? 
A computação tradicional tem baixa flexibilidade. Por exemplo, se a demanda de um serviço 
aumentar repentinamente e de forma agressiva, comprometendo os recursos disponíveis nos 
servidores atuais, o tempo de resposta para suprir a nova demanda na computação tradicional 
tem poucas chances de suprir a necessidade em tempo hábil. 
 
30. Com relação ao acesso e aos repositórios, quais são as características da computação em 
nuvem? 
A computação em nuvem abstrai certos conceitos de implementação. Os acessos e os 
repositórios dos serviços em nuvem são transparentes ao usuário. Ao acessar uma plataforma 
em nuvem você acessar um endereço central que pode estar sendo processado em um outro 
país e isso não é algo visível. Os repositórios são compartilhados apesar de serem individuais 
de forma virtual, mas utilizando no mesmo hardware, sendo isto transparente ao usuário. 
 
31. Quais são as entidades que se relacionam em um modelo de computação em nuvem? E como se 
dá esse relacionamento? 
Consumidor e Provedor. O provedor irá fornecer ao consumidor a computação em nuvem e o 
consumidor irá utiliza-la, de forma tarifada e acordada em contrato. 
 
32. Qual é a função do Hipervisor em um ambiente de computação em nuvem? 
O Hipervisor é responsável por gerenciar os recursos de hardware da infraestrutura 
disponíveis para atender as demandas computacionais dos serviços acessados pelos usuários. 
É basicamente um software de baixo nível que funciona para organizar e coordenar o consumo 
de hardware das máquinas que rodam os serviços em nuvem. 
 
33. Em quais conceitos baseia-se a computação em nuvem? 
É baseada nos conceitos de elasticidade e escalabilidade. 
 
34. Quais os modelos de implantação de um ambiente de computação em nuvem? 
Público, Privado, comunitário e híbrido.

Outros materiais