Logo Passei Direto
Buscar

Atividade-Pratica - Respondido

User badge image
Dyeime Farias

em

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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? 
 
PROCESSO é a execução das instruções definidas em um programa, sendo dinâmico e 
interagindo com outras entidades. 
 
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 poss 
manipulá-las com maior acurácia. Descreva a sequência correta dos estados possíveis de uma 
THREAD em UM estado EXECUTANDO. 
 
Nesse estado, o thread pode seguir três caminhos: 1- voltar para o estado de Pronto – ocorre 
quando o thread já executou seu quantum de cpu [1]; 2- alterar para o estado de Suspenso – 
ocorre quando o método sleep ou wait for invocado; 3- alterar para o estado Terminado – 
ocorre quando o thread termina seu processamento. 
 
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(): faz com que o thread fique suspenso até que seja explicitamente reativada; 
• sleep(t): faz com que o thread fique suspenso por t segundos; 
• notify(): Faz com que um thread suspenso seja reativado; 
• start(): inicia a execução do thread (só pode ser invocado uma vez); 
• yield(): faz com que a execução do thread corrente seja imediatamente suspenso, e outro 
thread seja executado; 
 
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? 
 
Método main – quando definimos o método main, estamos indicando ao compilador onde a 
MainThread (Silberschatz; Galvin; Gagne, 2016) deve iniciar a execução; 
 
Já a classe timer, define uma espécie de cronômetro também é exemplo de thread implícito. 
 
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, 
com criamos uma thread com a classe Thread? O que acontece com o método run? 
 
Para criarmos uma thread com a classe Thread utilizamos o “extends”, ou seja, estendemos a 
classe Thread. 
Nesse caso, o método run é uma sobrecarga do método run definido na superclasse e deve 
obrigatoriamente possuir essa assinatura – não possuir parâmetros e retorno. 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 2 
 
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? 
1- Concorrência; 
2- Ausência de um relógio global; 
3- Falhas; 
4- Heterogeneidade 
 
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? 
 
1- Encapsular um nome ou endereço; 
2- Realizar o look up de nome – converter o nome do host em um endereço IP; 
3- Realizar o look up inverso – converter um endereço IP em um nome de host. Para utilizar um 
objeto dessa classe, é preciso utilizar o método estático “getLocalHost” caso deseje obter o 
endereço IP da máquina local, ou “getByName”, caso deseje obter um endereço específico. 
 
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. 
 
Para estabelecer essa comunicação, o processo remetente envia uma mensagem (sequência de 
bytes) para um processo destino – o processo destino recebe essa mensagem. Em muitos casos, 
é preciso que exista sincronização entre esses processos para execução dessa atividade de 
envio/recebimento. A comunicação entre essas entidades pode ser síncrona ou assíncrona. 
Uma comunicação é dita síncrona quando o remetente fica bloqueado após o envio de uma 
mensagem, sendo desbloqueado quando o destinatário responder à respectiva mensagem. Já 
na comunicação assíncrona, o envio de mensagem não é bloqueante. Ou seja, o processo 
remetente pode continuar 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? 
 
Socket é um ponto de comunicação (endpoint) entre dois processos, sendo composto de um 
endereço e uma porta. Assim, a comunicação entre processos consiste na transmissão de 
mensagens entre sockets alocados em processos. 
 
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 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 3 
destinatário. Ou seja, não tem garantia de entrega de mensagem. Cite vantagens e 
desvantagens dos sockets UDP. 
 
A principal vantagem está relacionada à redução de complexidade, o que implica menor 
latência na comunicação. Como desvantagens, é possível ressaltar que as mensagens podem ser 
perdidas e a sua ordenação não é garantida. 
 
11. Para implementar uma solução baseada em sockets UDP, é preciso utilizar duas classes: 
DatagramPacket e DatagramSocket. Com funcionam essas classes? 
 
A classe Datagram Packet representa um datagrama no UDP. Existem duas formas de se utilizar 
essa classe: para envio e recebimento de mensagens. Quando estiver utilizando a classe para 
enviar um datagrama, este deve conter o endereço e a porta para alcançar o destino. Já quando 
estiver utilizando para receber um datagrama, não há necessidade de preencher essas 
informações. De qualquer maneira, seja no envio ou no recebimento de um datagrama, duas 
informações devem ser definidas: buffer e tamanho do buffer. 
 
Para instanciar um Datagram Socket, é possível determinar a porta a que estará vinculado ou 
utilizar qualquer porta disponível. Caso o desenvolvedor apresente a porta no construtor da 
classe, o socket será alocado nessa porta. Caso contrário, será vinculado em qualquer porta 
disponível. A classe Datagram Socket possui dois principais métodos: send e receive. O método 
send tem a finalidade de enviar um datagrama. Já o método receive tem a finalidade de receber 
um datagrama, sendo que o thread em execução fica bloqueado até que o datagrama seja 
recebido. É importante ressaltar que o método receive exige uma instância de Datagram Packet 
por parâmetro, que será preenchido quando o datagrama for recebido. 
 
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. 
 
Esse modelo tem como objetivo descentralizar os dados e recursos de processamento (Josuttis, 
2018), bem como pode ser composto de um ou mais computadores que atuam como 
servidores, que disponibilizam recursos paraas demais máquinas, as quais atuam como 
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ísticas 
destes sistemas. 
 
O alto acoplamento dos sistemas e a falta de interoperabilidade são motivos de um dos maiores 
problemas da TI, a falta de alinhamento dos negócios com a TI (Pulier, E.; Taylor, 2008). As 
organizações são dependentes das informações, e é essencial que existam tecnologias que 
provenham suporte a essas informações e que estejam alinhadas com os processos e as 
necessidades da organização. 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 4 
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. 
 
Contrato: especifica o que o serviço oferece, características e regras. 
Interface: define como um consumidor pode utilizar e acessar um serviço. 
Implementação: realiza o serviço. 
 
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? 
 
Assim, um serviço é um componente de sistema que representa a 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: 
 
 
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. 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 5 
 
( 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: 
 
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 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 6 
 
 
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 possui um relógio próprio baseado em um circuito (cristal) responsável por 
determinar o horário por meio de tickets (oscilações). Assim, não é possível considerar que as 
oscilações de cada cristal estão exatamente na mesma frequência. 
 
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. 
 
O algoritmo considera o relógio físico para realizar a sincronização. Ou seja, considera as horas 
conforme o ser humano está habituado a usar. 
O algoritmo de Christian parte da premissa de que a rede dispõe de um servidor de tempo 
(Autoridade). Esse servidor possui o horário oficial, e todas as outras máquinas são sincronizadas 
com base nesse horário. O diferencial desse algoritmo é a consideração da latência (delay) da rede 
no momento da sincronização. Quando um determinado processo (cliente) solicita o horário ao 
servidor, o servidor atende à solicitação informando o horário atual. Quando o cliente recebe a 
resposta, ele acrescenta o tempo médio de troca de mensagens ao horário recebido. 
 
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? 
 
T0 T1 I R 
3004 3050 8 3035 
Aplicando a fórmula, o valor de d é igual a 19. Assim, a máquina M deve ajustar seu horário 
para R + d, que é 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? 
 
Quando um determinado processo (cliente) solicita o horário ao servidor, o servidor atende à 
solicitação informando o horário atual. Quando o cliente recebe aresposta, ele acrescenta o 
tempo médio de troca de mensagens ao horário recebido 
 
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 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 7 
Invocação Remota de Métodos (Remote Method Invocation - RMI), utilizada em linguagens 
orientadas a objeto (Java, C++, C#)? 
 
as chamadas remotas são programadas da mesma forma (na ótica do programador) que as 
chamadas de procedimentos/métodos locais. Ambas as abordagens aumentam o nível de 
abstração para o programador. 
 
25. Quais são os tipos de sockets usados pela Chamada Remota de Procedimento (Remote 
Procedure Call - RPC)? 
 
O programador não utiliza sockets diretamente. É possível observar que a chamada remota de 
procedimentos utiliza internamente sockets que podem ser baseados em UDP ou TCP. 
 
26. Quais boas práticas são recomendadas para quando estamos trabalhando com o RMI? 
 
Primeiramente, quando o servidor associar um objeto ao nome, utilize o método rebind ao 
invés do método bind; 
Na declaração da classe Pessoa, deve-se implementar a interface Serializable. 
 
27. Qual é a relação entre Arquitetura Orientada a Serviços (Service Oriented Architecture - SOA) e 
Web Services? 
 
Essa relação é semelhante à relação entre uma classe e um objeto em programação orientada a 
objetos (Meyer, 1997). 
Por se tratar de uma arquitetura, a SOA necessita de um mecanismo que implemente seus 
conceitos e adicionalmente materialize suas filosofias. Esse mecanismo chama-se web services. 
Dessa forma, web service é um conjunto de padrões que cobrem a interoperabilidade. Web 
services definem protocolos que são usados na comunicação, no formato da interface e do 
contrato dos serviços. 
 
28. Quais são os problemas da tecnologia Chamada Remota a Procedimentos (RPC) que os web 
services pretendem resolver? 
 
Os web services evoluíram o conceito da chamada remota de procedimentos (RPC), devido a 
alguns problemas encontrados nessa tecnologia. A RPC, juntamente com a RMI, permitiu que 
aplicações acessassem de maneira transparente métodos remotos. Entretanto, alguns 
problemas inerentes da comunicação entre processos, como o alto acoplamento e a baixa 
interoperabilidade, ainda continuam existentes. É importante ressaltar que a interoperabilidade 
nessa abordagem é praticamente inexistente, uma vez que apenas quem utiliza a mesma tecnologia 
consegue realizar a comunicação. 
 
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 para escalar o processamento. Caso necessite 
aumentar a capacidade, é comum encontrar dificuldade em instalação/integração dos novos 
recursos com os existentes. Além disso, grandes alterações necessitam de um novo 
planejamento. Quando é necessário diminuir a capacidade a situação, é ainda pior. O que fazer 
ESPU Sistemas Distribuídos 
Profº.Renan Portela Jorge 
 - 8 
com o hardware supérfluo? Se forem vendidos, o preço será muito menor do que o preço de 
compra. Se for mantido, ainda existe o consumo de energia mesmo quando os recursos estão 
ociosos. 
 
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 disponibiliza um repositório compartilhado de recursos, os quais são 
recursos computacionais, como memória, processamento, armazenamento, rede etc. Eles estão 
agrupados visando servir múltiplos consumidores (organizações), também chamados de multi-
inquilinos (multitenant). Isso significa que um determinado processador pode ser utilizado por 
diversos consumidores de maneira transparente. Ou seja, o consumidor pode executar sua 
aplicação sobre o mesmo hardware do seu concorrente sem ter conhecimento. Isso é possível 
graças à virtualização, que abstrai detalhes físicos do hardware e provê recursos virtualizados. 
 
31. Quais são as entidades que se relacionam em um modelo de computação em nuvem? E como se 
dá esse relacionamento? 
 
A computação em nuvem é composta por duas entidades: provedor e consumidor. O provedor 
é responsável por gerenciar e disponibilizar serviços, sendo responsável pela garantia dos 
serviços prestados, baseado em um contrato estabelecido com o consumidor. O consumidor 
utiliza os serviços disponibilizados pelo provedor. Antes de um serviço ser consumido, o 
consumidor assina um contrato com o provedor, chamado de Service Level Agreement (SLA). 
 
32. Qual é a função do Hipervisor em um ambiente de computação em nuvem? 
 
O hipervisor garante o isolamento entre as máquinas virtuais. Assim, uma máquina virtual não 
pode acessar aplicações ou arquivos de outra máquina virtual 
 
33. Em quais conceitos baseia-se a computação em nuvem? 
 
Sistemas distribuídos, serviços e virtualização. 
 
34. Quais os modelos de implantação de um ambiente de computação em nuvem? 
 
Existem quatro tipos de modelos de implantação: 
• Pública 
• Privada 
• Comunitária 
• Hibrida

Mais conteúdos dessa disciplina