Baixe o app para aproveitar ainda mais
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.
Compartilhar