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