Sobre o processamento paralelo e distribuído, assinale (V) ou (F) para
cada afirmação: ○ A computação paralela é caracterizada pelo uso de vários processadores para executar uma computação de forma mais rápida, baseando-se no fato de que o processo de resolução de um problema pode ser dividido em tarefas menores, que podem ser realizadas simultaneamente através de algum tipo de coordenação. V ○ A execução de tarefas em um ambiente de processadores distribuídos com acoplamento fraco prevê que a memória seja compartilhada entre os processos trabalhadores. F ○ Em programação paralela não é necessário se conhecer a arquitetura de comunicação entre processadores para elaborar os programas. F ○ Um grid computacional pode ser formado por diversos computadores, heterogêneos, que não podem estar distribuídos via web. F ○ Um sistema distribuído fortemente acoplado é formado por um ambiente de computadores dotados de memória e sistema operacional próprios, que se comunicam via switch.F
2. Segundo Andrew Tanenbaum (2007) “Sistema Distribuído é uma
coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente”. Assinale a alternativa correta a respeito de um sistema de informação distribuído e, para cada incorreta, justifique. ○ A distribuição de tarefas se dá a partir de requisições do usuário, que indica o endereço do servidor onde deseja executar tal tarefa. Falso. O usuário não escolhe onde sua tarefa será executada. ○ Em uma rede de computadores há servidores dedicados a atender pedidos dos clientes e estes, por sua vez, têm função exclusiva de requisitantes. Falso. Podem ser nós de processamento também. ○ Todos os computadores de uma rede executam tarefas de cliente e servidor, quando se deseja integrá-los em uma arquitetura de sistemas distribuídos. Falso. Pode haver computadores que executam só tarefas clientes, outro só tarefas de servidor, não há necessidade de ser exclusivamente os dois. ○ A transparência de acesso é uma característica dos sistemas distribuídos que permite que recursos sejam acessados sem que sua localização seja determinada. Falso. Todo recurso precisa ser localizado por algum método, seja diretamente ou através de algum artifício, como DNS, por exemplo. ○ Em um sistema de objetos distribuídos é possível invocar métodos de um objeto, ainda que este não esteja presente no computador do usuário. Verdadeiro. Exemplos: java RMI, JMS… 3. Um programa servidor escrito em uma linguagem (Python, por exemplo) provê a implementação de um objeto que pode ser acessado por clientes escritos em linguagens diferentes (por exemplo, Java). Os computadores clientes e servidores podem ter hardware diferente uns dos outros, mas todos estão conectados à Internet. Descreva os problemas decorrentes dos vários aspectos de heterogeneidade e que precisam ser resolvidos para tornar possível a um objeto cliente chamar um método em um objeto servidor. Resposta: Os tipos de dados podem ser representados de diversas maneiras em diferentes hardwares e assim como diferentes linguagens de programação utilizam diferentes representações para caracteres e estruturas de dados. Embora os sistemas operacionais de todos os computadores na internet precisem incluir uma implementação de protocolos de internet, nem todos usam necessariamente a mesma interface de programação de aplicativos para esses protocolos. Sendo assim, se utiliza o middleware para tratar desses problemas de heterogeneidade, fornecendo um modelo computacional uniforme para ser usado pelos programadores de serviços e de aplicativos distribuídos. Os modelos possíveis incluem a invocação remota de objetos, a qual permite que um objeto, em um programa sendo executado por um computador, invoque um método de um objeto em um programa executado em outro computador.
4. Discuta as possíveis falhas que podem ocorrer quando um processo
cliente realiza uma chamada a um objeto servidor. O que pode ser feito para que o sistema seja tolerante a essas falhas? Resposta: falhas que podem ocorrer: perda de requisição por algum gargalo na rede, o que acaba gerando timeout, falha na comunicação( o servidor está fora do ar). As tecnicas que podem ser implementadas para um sistema mais tolerante a falhas são: Detecção de falhas (onde as falhas podem ser detectadas, possibilitando o sistema isolar o problema e tratá-lo), ocultação de falhas (permite que o sistema corrija a falha escondendo a sua ocorrência, por exemplo, do usuário), recuperação de falhas (permite que um sistema possa recuperar um estado consistente de dados até o momento antes da falha) e um sistemas com redundâncias ( onde os sistemas podem também oferecer componentes redundantes para evitar falhas).
5. Considere um processo servidor que mantém um objeto
compartilhado, o qual pode ser acessado por vários clientes ao mesmo tempo. Que problemas ou “interferências" podem ocorrer ao se permitir a execução concorrente de requisições de múltiplos clientes? Como prevenir essas interferências? Resposta: Se a execução concorrente de requisições de múltiplos clientes sobre objeto compartilhado mantido pelo servidor forem permitidas, os dados se tornarão inconsistentes, eventualmente. Para prevenir isso não se pode permitir a execução concorrente de requisições de múltiplos clientes.
6. O uso de URLs em HTTP para identificar recursos possibilita
transparência de localização? E transparência de acesso? Explique. Resposta: Os URLs são transparentes na localização, pois a parte do url que identifica o nome de um servidor web se refere a um nome de computador em um domínio, em vez de seu endereço IP.
7. Escolha dois problemas (1 a 8 do anexo) e os implemente usando
uma arquitetura Servidor Concorrente e usando linguagens diferentes para o cliente e o servidor. No anexo há uma solução usando Python e Java para o enunciado 9.