Você está na página 1de 3

1.

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.

Você também pode gostar