Fundamentos de Sistemas Distribuídos Exercícios
Fundamentos de Sistemas Distribuídos Exercícios
Fundamentos de Sistemas Distribuídos Exercícios
Considerando uma tarefa de 100s onde 5 segundos dela são obrigatoriamente serializáveis, qual é
o speedup no caso do uso de 5 processadores?
II - Em um sistema distribuído, a falha pode ser parcial, e o usuário final pode não perceber a
ocorrência da falha, sendo essa uma vantagem dos sistemas distribuídos.
III. Os componentes de um sistema distribuído podem estar localizados em uma rede local ou em
uma rede distribuída, mas os tipos de sistemas operacionais que compõem o sistema distribuído
devem ser necessariamente homogêneos.
IV. Peer-to-peer pode ser entendido como uma arquitetura de sistemas distribuídos caracterizada
pela descentralização das funções na rede, onde cada nodo realiza tanto funções de servidor quanto
de cliente.
II) Os recursos de memória podem ser compartilhados por processos sendo executados em
máquinas distintas.
III) A vantagem da memória distribuída é que ela exclui condições de corrida. O programador deve
pensar sobre a distribuição de dados.
1. Considerando o paralelismo de dados, em relação às afirmações a seguir, marque a alternativa
correta:
III) Como cada processador executará um thread, ou processo, diferente no mesmo conjunto de
dados ou em um conjunto diferente de dados, a aceleração é menor.
1. Em relação à arquitetura cliente-servidor, considerando as afirmações a seguir, assinale a
alternativa correta:
I) Como o armazenamento de dados é centralizado, as atualizações dos dados são muito mais fáceis
de administrar em comparação com o paradigma peer-to-peer (P2P).
III) O modelo não é robusto, pois é sensível à falha de um servidor. No caso de falha por parte de um
servidor crítico, por exemplo, as requisições já feitas pelos clientes não poderão ser atendidas.
2. Em relação ao modelo de comunicação mestre-escravo, considerando as afirmações a seguir,
assinale a alternativa correta:
III) A maneira pela qual a carga computacional ou o tamanho das tarefas atribuídas aos escravos é
decomposta chama-se granularidade.
I. O paradigma de thread estático possibilita que parte da memória que é usada para um tipo de
sistema seja preservada para outro.
II. No paradigma de thread dinâmico, todos os threads são bifurcados/iniciados após qualquer
configuração necessária pelo thread mestre, e os threads são executados até que todo o trabalho
seja concluído.
III. Se os recursos necessários já estiverem disponíveis, é mais adequado o uso do paradigma de
thread estático, em vez do thread dinâmico.
2.
Deadlocks é uma situação indesejável, mas que pode ocorrer quando as condições de Coffman
ocorrem em uma determinada aplicação. Considerando os conceitos de deadlock, em relação às
afirmações a seguir, marque a alternativa correta.
I. Deadlocks fantasmas são deadlocks que são falsamente detectados em um sistema distribuído
devido a atrasos internos do sistema, existindo de fato.
II. Deadlocks (ou impasse) relaciona-se a uma situação em que ocorre um impasse, e dois ou mais
processos ficam impedidos de continuar suas execuções − ou seja, ficam bloqueados, esperando uns
pelos outros.
III. Uma forma de detectar deadlocks distribuídos é pela construção de um gráfico de espera global,
construído a partir de gráficos de espera locais.
I. Um semáforo é um tipo de dado variável ou abstrato usado para controlar o acesso a um recurso
comum por vários processos e evitar problemas de seção crítica em um sistema simultâneo, como
um sistema operacional multitarefa.
II. Um semáforo trivial se assemelha a uma variável simples, que é alterada (incrementada,
decrementada ou alternada) de acordo com a operação definida pelo programador.
III. Os semáforos são ferramentas utilizadas na prevenção de condições de corrida, e seu uso garante
que um programa esteja livre desses problemas.
2. Em relação às afirmações a seguir, marque a alternativa correta.
I. Uma das diferenças entre o tipo de semáforo e o tipo de monitor é que o primeiro possui variáveis
de condição, já o segundo não as possui.
II. A operação signal() é a única maneira pela qual o valor do semáforo pode ser modificado.
III. O semáforo é uma variável inteira S que indica a quantidade de recursos disponíveis no sistema,
enquanto o monitor é o tipo de dado abstrato que permite que apenas um processo seja executado
na seção crítica por vez.
1. Em relação às afirmações a seguir, marque a alternativa correta.
I. Corrotinas são componentes de programas de computador que permitem que a execução desse
programa seja suspensa e reiniciada.
II. O uso de corrotinas permite, por exemplo, a não utilização de mecanismos de primitivas de
sincronização, como semáforos e mutex.
III. As corrotinas são úteis para implementar máquinas de estado.
2. Para que seja desenvolvida uma aplicação que empregue computação paralela, podem ser
utilizados diversos ambientes de programação, como OpenMP, Phtreads, entre outros.
Considerando apenas o ambiente Phtreads, em relação às afirmações a seguir, marque a alternativa
correta.
I. O processo é um grupo de recursos (código e dados), e possui uma identidade própria, enquanto
os threads são criados no contexto de um processo e compartilham o mesmo espaço de
endereçamento.
II. Threads ocupam a CPU do mesmo modo que o processo criador, mas não são escalonadas por
esse mesmo processo.
III. A biblioteca pthreads.h, definida no padrão POSIX threads (IEEE 1003.1c) ou Pthreads, possui
apenas funções para criar e gerenciar threads.
1. Qual o modelo que permite transmitir uma mesma mensagem a vários consumidores?
2. A interação entre as aplicações deve garantir uma dependência mínima entre elas. Isso garante
que qualquer modificação em uma aplicação não irá afetar a outra. Essa afirmação corresponde a
qual funcionalidade?
2. Com base no que aprendemos sobre OpenShift, utilizando a interface de linha de comando,
podemos verificar:
1. Marque a alternativa que corresponde ao Python:
2. Com base no que aprendemos, são termos usados no tópico da programação CUDA, exceto:
1. Marque a alternativa correta sobre Docker:
15s.
10s.
2s.
20s.
12s
Data Resp.: 14/02/2024 19:02:33
Explicação:
A resposta certa é: 12s
Explicação:
A resposta certa é: MISD.
Explicação:
A resposta certa é: Apenas a afirmação I está correta.
10s.
Próximo de zero.
20s.
1s.
0,1s.
Data Resp.: 14/02/2024 19:03:55
Explicação:
A resposta certa é: 10s.
Explicação:
A resposta certa é: Apenas a afirmação II é correta.
Explicação:
A resposta certa é: Todas as afirmações estão corretas.
Paralelismo SIMD.
Paralelismo de memória.
Paralelismo de instruções.
Paralelismo de tarefas.
Paralelismo de dados.
Data Resp.: 14/02/2024 19:04:59
Explicação:
O paralelismo de tarefas é o mais apropriado para sistemas distribuídos que lidam com tarefas
heterogêneas e complexas. Ele permite a execução simultânea de tarefas diferentes em múltiplos
processadores, otimizando o processamento e melhorando o desempenho do sistema.
Memória compartilhada.
Lei de Moore.
Paralelismo de tarefas.
Lei de Amdahl.
Arquitetura SIMD.
Data Resp.: 14/02/2024 19:05:30
Explicação:
A Lei de Amdahl é fundamental ao implementar sistemas distribuídos para processamento de grandes
volumes de dados, especialmente quando o foco é a eficiência e a redução do tempo de resposta. Ela
descreve o limite de quanto um programa pode ser acelerado pela paralelização, enfatizando a importância
do balanceamento entre tarefas paralelas e sequenciais.
Explicação:
A redundância de componentes é a abordagem mais eficaz para aumentar a tolerância a falhas em
sistemas distribuídos. Ela envolve ter múltiplas instâncias de componentes críticos, de modo que, se um
falhar, outro pode assumir suas funções, garantindo a continuidade das operações do sistema.
SISD.
MIMD.
Arquitetura híbrida.
SIMD.
MISD.
Data Resp.: 14/02/2024 19:06:33
Explicação:
A arquitetura SISD (Single Instruction, Single Data) é a menos adequada para o processamento paralelo
em sistemas distribuídos, pois ela opera com uma única instrução atuando em um único conjunto de dados
por vez. Isso limita a capacidade de processamento paralelo, sendo menos eficiente para sistemas
distribuídos que exigem alto desempenho e manipulação simultânea de múltiplas tarefas ou dados.
Qual era a técnica que permitia alternar tarefas nos primeiros sistemas operacionais não preemptivos?
Threads
Corrotinas
Semáforos
Mutex
Deadlocks
Data Resp.: 14/02/2024 19:08:45
Explicação:
A resposta certa é: Corrotinas
Reduzir o tamanho de uma aplicação, uma vez que threads ocupam menos espaço em relação aos
processos.
Dividir a aplicação em tarefas que acessam recursos compartilhados.
A sobreposição de tarefas pode acelerar a aplicação.
Utilização em sistemas não-preemptivos.
Possibilitar paralelismo real em sistemas multicore.
Data Resp.: 14/02/2024 19:09:06
Explicação:
A resposta certa é: Utilização em sistemas não-preemptivos.
Explicação:
A resposta certa é: Todas as afirmações estão corretas.
Detecção.
Ignorar o impasse.
Condições de corrida.
Preempção.
Encerramento do processo.
Data Resp.: 14/02/2024 19:10:38
Explicação:
A resposta certa é: Ignorar o impasse.
Explicação:
A resposta certa é: As afirmações I e III estão corretas.
Explicação:
A resposta certa é: As afirmações I e II estão corretas.
Explicação:
Utilizar um algoritmo de detecção de deadlock é uma abordagem eficaz para identificar e resolver
deadlocks em ambientes de computação paralela. Esses algoritmos permitem reconhecer situações onde
múltiplas threads estão esperando indefinidamente por recursos, possibilitando a intervenção para
desfazer o impasse.
Explicação:
O uso de um algoritmo de escalonamento dinâmico é ideal para o balanceamento de carga em ambientes
de processamento de imagens paralelos. Este método permite a adaptação à carga de trabalho variável de
cada thread, distribuindo as tarefas de maneira mais eficiente e melhorando o desempenho geral do
sistema.
Explicação:
O uso de mecanismos de bloqueio ou lock é uma estratégia eficiente para gerenciar o acesso a variáveis
compartilhadas em computação paralela. Estes mecanismos garantem que apenas uma thread por vez
possa modificar a variável, prevenindo inconsistências nos dados causadas por acessos simultâneos.
Explicação:
A implementação de semáforos é uma técnica eficaz para controlar o acesso a recursos compartilhados
em ambientes de computação paralela, prevenindo condições de corrida. Semáforos permitem a
sincronização entre processos ao controlar o acesso a recursos, garantindo que apenas um processo os
utilize por vez.
Os participantes podem decidir se esperam ou não pela recuperação do processo que falhou.
Os participantes podem decidir se esperam ou não pela recuperação do coordenador que falhou.
O coordenador pode escolher um backup para assumir na sua falha.
Se o coordenador falhar, o sistema para de funcionar e precisará de uma intervenção manual.
Se o coordenador falhar, um algoritmo de eleição se encarrega de eleger um novo coordenador para
continuar com os procedimentos.
Data Resp.: 14/02/2024 19:15:39
Explicação:
A resposta certa é: Se o coordenador falhar, um algoritmo de eleição se encarrega de eleger um novo
coordenador para continuar com os procedimentos.
Explicação:
A resposta certa é: Orquestração para eleição de um novo coordenador.
Explicação:
A resposta certa é: Método de desenvolvimento de paralelismo explícito, usado em arquiteturas de
múltiplos processadores sobre um único barramento para acesso a memória.
4. O que é verdadeiro sobre chamadas de procedimentos remotos?
Explicação:
A resposta certa é: Os clientes executam chamadas remotas, passando como parâmetros as funções que
necessitam ser executadas em um computador remoto.
I e III.
II e III.
II e IV.
I e IV.
III e IV.
Data Resp.: 14/02/2024 19:17:09
Explicação:
A resposta certa é: II e III.
6. Em um sistema distribuído, a replicação de dados é crucial para a
resiliência e disponibilidade. Quando um nó falha, outro pode assumir
suas funções. Este processo depende de um mecanismo eficaz de
replicação de dados.
Qual mecanismo é essencial para a replicação eficiente de dados em
sistemas distribuídos?
Algoritmo de ordenação.
Balanceamento de carga.
Gerenciamento de memória.
Protocolo de estado.
Protocolo de consenso.
Data Resp.: 14/02/2024 19:17:22
Explicação:
O protocolo de consenso é fundamental na replicação de dados em sistemas distribuídos, garantindo que
todos os nós mantenham uma visão consistente dos dados. Ele permite que, mesmo em caso de falhas, o
sistema continue operando de maneira coerente.
Mecanismo de backup.
Protocolo NTP.
Algoritmo de eleição.
Gerenciamento de tarefas.
Controle de acesso.
Data Resp.: 14/02/2024 19:17:34
Explicação:
O Protocolo de Tempo de Rede (NTP) é essencial em sistemas distribuídos para sincronizar relógios dos
computadores na rede. Ele garante que as operações ocorram de forma coordenada e consistente.
8. Na computação distribuída, a resolução de nomes é um desafio, visto
que identifica recursos distribuídos geograficamente, garantindo a
comunicação efetiva entre diferentes nós.
Qual sistema é crucial para a resolução eficaz de nomes em
computação distribuída?
Middleware.
DNS.
Sistema de gerenciamento de banco de dados.
Sistema de controle de versão.
Sistema de arquivos.
Data Resp.: 14/02/2024 19:17:50
Explicação:
O Sistema de Nomes de Domínio (DNS) é vital para resolver nomes em computação distribuída,
traduzindo nomes de domínio fáceis de lembrar em endereços IP necessários para a localização de
recursos na rede.
Transparência de localização.
Transparência de replicação.
Transparência de performance.
Transparência de falhas.
Transparência de acesso.
Data Resp.: 14/02/2024 19:18:04
Explicação:
A transparência de localização é crucial em sistemas distribuídos, pois permite que os usuários acessem
recursos sem precisar saber sua localização física, mantendo a ilusão de um sistema unificado.
Criptografia de dados.
Algoritmo de escalonamento.
Protocolo de roteamento.
Técnica de compactação.
Mecanismo de autenticação.
Data Resp.: 14/02/2024 19:18:14
Explicação:
Algoritmos de escalonamento são essenciais para o balanceamento de carga em sistemas distribuídos,
pois eles determinam como as tarefas são distribuídas entre os diferentes nós, assegurando uma utilização
eficiente dos recursos.
Explicação:
A resposta certa é: Possuem algoritmos específicos altamente acoplados.
Mapeia uma porta externa para uma porta interna à rede Docker.
Divulga uma porta (TCP ou UDP) para os hosts externos à rede Docker.
Expõe um serviço do container para a rede Docker default.
Documenta quais portas se pretende publicar.
Define o diretório de trabalho de um contêiner do Docker a qualquer momento.
Data Resp.: 14/02/2024 19:20:34
Explicação:
A resposta certa é: Define o diretório de trabalho de um contêiner do Docker a qualquer momento.
Disponível para Windows (XP, Vista e 7), Linux e MacOS X, em versões de 32 e 64 bits.
Pode ser obtido gratuitamente no site da Nvidia.
Possui o Cuba Driver, que permite o acesso ao hardware.
Possui o CUDA Toolkit, que são ferramentas e bibliotecas para programação em CUDA.
Possui o CUDA SKD, que é um editor de código necessário para programar em CUDA.
Data Resp.: 14/02/2024 19:20:45
Explicação:
A resposta certa é: Possui o CUDA SKD, que é um editor de código necessário para programar em CUDA.
Explicação:
A resposta certa é: É uma funcionalidade do Red Hat OpenShift que possibilita aos desenvolvedores
incorporarem máquinas virtuais tradicionais a fluxos de trabalho no OpenShift Container Platform.
5. O Openshift provê recursos a partir do Kubernetes, sendo capaz de
executar e disponibilizar aplicações a partir de contêineres. As
imagens dos contêineres no Openshift podem ser armazenadas no
componente denominado:
secret
pod
registry
master
build
Data Resp.: 14/02/2024 19:21:21
Explicação:
A resposta certa é: pod
Explicação:
A resposta certa é: Permite armazenar e gerenciar informações confidenciais, como senhas, tokens OAuth
e chaves SSH.
Explicação:
A resposta certa é: Alto grau de acoplamento.
haproxy
namespace
API server
etcd
replica controller
Data Resp.: 14/02/2024 19:22:37
Explicação:
A resposta certa é: etcd
Explicação:
A resposta certa é: Não permite suporte a uma hierarquia de grupos de threads.