Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação IV
Resolução de Exercícios
Nome:
R: Um sistema distribuído é transparente significa que ele oculta a complexidade de sua estrutura
e funcionamento, fornecendo aos usuários e aplicativos uma visão unificada e simplificada.
Existem vários tipos de transparência em sistemas distribuídos. Aqui estão alguns exemplos:
Um exemplo é o acesso a um banco de dados distribuído como se fosse um banco de dados local.
Transparência de Migração: Permite que os recursos sejam movidos de um local para outro sem
afetar os usuários ou aplicativos que os estão utilizando.
Transparência de falhas: O sistema distribuído pode lidar com falhas de nós ou componentes sem
que os usuários percebam ou sejam afetados diretamente.
Por exemplo, em um sistema distribuído com replicação de dados, se um servidor falhar, outros
servidores podem assumir a responsabilidade sem que os usuários sejam afetados.
Autor: Alexivic 1
Autor: Alexivic Domingo, 25 de junho de 2023
Flexibilidade: Um sistema distribuído aberto oferece flexibilidade aos usuários finais, permitindo
que eles personalizem e adaptem o sistema de acordo com suas necessidades específicas.
R: Aqui estão algumas das características que podem ser consideradas para distinguir um Sistema
Operacional de Rede (NOS - Network Operating System) de um Sistema Operacional Distribuído
(DOS - Distributed Operating System):
Escopo:
NOS: O escopo de um NOS geralmente é limitado a uma rede local (LAN) ou a uma rede de área
ampla (WAN). Ele concentra-se em fornecer serviços de rede dentro dessa rede específica.
DOS: O escopo de um DOS abrange múltiplas redes ou até mesmo a Internet. Ele lida com a
interconexão e coordenação de recursos entre computadores geograficamente distribuídos.
Gerenciamento de Recursos:
DOS: Um DOS gerencia recursos distribuídos em uma escala maior, como o gerenciamento de
recursos de armazenamento distribuído, capacidade de processamento distribuído e coordenação
de tarefas em diversos nós.
Dependência de Rede:
NOS: Um NOS depende fortemente da presença e disponibilidade da rede para fornecer seus
serviços. Se a rede estiver inacessível, muitos serviços de um NOS podem não estar disponíveis.
DOS: Um DOS também depende da rede para comunicação e compartilhamento de recursos, mas
é projetado para lidar com a desconexão e falhas de rede de forma mais robusta. Ele é capaz de
continuar operando mesmo que a conectividade de rede seja interrompida temporariamente.
Autor: Alexivic 2
Autor: Alexivic Domingo, 25 de junho de 2023
Distribuição Vertical: Envolve a adição de mais recursos (como CPU, memória, armazenamento) a
um único componente ou servidor existente. O objetivo é aumentar a capacidade de
processamento e desempenho de um único nó.
Distribuição Horizontal: Envolve a adição de mais nós (servidores, máquinas virtuais) ao sistema
distribuído existente. O objetivo é distribuir a carga de trabalho entre múltiplos nós, dividindo as
tarefas entre eles.
R: Definir que uma aplicação sempre utilize a mesma porta para referenciar objetos no servidor, em
vez de permitir o registro em um daemon (como no caso de DCE-RPC), apresenta algumas
desvantagens, incluindo:
Conflito de portas: Se várias aplicações ou servidores tentarem utilizar a mesma porta fixa, pode
ocorrer um conflito de portas. Isso pode levar a falhas na inicialização dos serviços ou na
comunicação entre os sistemas.
Autor: Alexivic 3
Autor: Alexivic Domingo, 25 de junho de 2023
Servidor Single-threaded:
Servidor Multithreaded:
Vamos considerar que o servidor multithreaded possui n threads para processar as requisições
simultaneamente. Nesse caso, podemos dividir o tempo total por requisição pelo número de
threads para obter o tempo médio por requisição:
Portanto, se o servidor for multithreaded com 4 threads, ele será capaz de manipular
aproximadamente 44.4 requisições por segundo.
Autor: Alexivic 4
Autor: Alexivic Domingo, 25 de junho de 2023
As requisições são recebidas pelo sistema e colocadas em uma fila de tarefas a serem
processadas.
As threads disponíveis no pool pegam as tarefas da fila e as processam, uma de cada vez.
Cada thread pode processar várias requisições ao longo do tempo.
Após o processamento, a thread fica disponível novamente para pegar outra tarefa da fila.
Thread-per-Request:
Nessa arquitetura, cada requisição recebida pelo sistema é associada a uma nova thread
separada.
Uma nova thread é criada para cada requisição e é responsável por todo o processamento dessa
requisição.
Cada thread é alocada para uma requisição específica e executa as operações necessárias para
atender a essa requisição.
Após o processamento da requisição, a thread é finalizada e liberada.
Isolamento de falhas: Cada processo tem seu próprio espaço de endereçamento, o que significa
que se um processo falhar, os demais processos não são afetados.
Facilidade de programação: Em muitos casos, programar com processos concorrentes pode ser
mais simples do que programar com threads.
Autor: Alexivic 5
Autor: Alexivic Domingo, 25 de junho de 2023
Controle de recursos: Limitar o número de threads permite um melhor controle dos recursos do
sistema. Threads consomem recursos como memória e recursos do sistema operacional.
Capacidade de resposta limitada: Limitar o número de threads pode resultar em uma capacidade
de resposta limitada do servidor, especialmente em situações em que há um grande número de
requisições simultâneas.
11. Considere um processo P que requer acesso para um arquivo F. Esse arquivo está
localizado na mesma máquina onde P está executando. Quando P é movido para uma
máquina deve continuar acessando F. Como isso pode ser conseguido?
R: Para permitir que um processo P acesse o arquivo F, mesmo após ser movido para outra máquina,
algumas abordagens podem ser consideradas:
Autor: Alexivic 6
Autor: Alexivic Domingo, 25 de junho de 2023
Falsos positivos: Mesmo se um processo estiver operacional, pode ocorrer um atraso ou uma falha
temporária na comunicação que resulta em uma falta de resposta.
14. É possível sincronizar o clock de dois computadores ligados por uma rede local sem uma
referência a uma fonte externa de tempo? Quais fatores limitam a solução que você
sugeriu?
R: Embora seja difícil alcançar uma sincronização precisa entre os clocks de dois computadores sem
uma referência externa de tempo, é possível obter uma sincronização aproximada em certos
cenários. No entanto, a variação do clock local, os atrasos de rede, a precisão desejada e a tolerância
ao erro são fatores que limitam a solução e afetam a qualidade e a precisão da sincronização. Em
muitos casos, é recomendado usar protocolos de sincronização de tempo baseados em fontes
externas confiáveis para obter uma sincronização precisa e consistente.
16. Imagine uma situação em que os assinantes de uma lista de e-mail possuem réplicas locais
dos dados enviados (escritos) para essa lista. Como administrador do software que
coordena a entrega de mensagens da lista, você deve garantir duas coisas: a. Mensagens
enviadas por um usuário devem ser lidas na ordem em que elas foram enviadas. Exemplo:
se o usuário 1 envia as mensagens A e B, todos os outros usuários devem ler as mensagens
nessa ordem: primeiro a mensagem A e depois a B; b. Mensagens enviadas por usuários
Autor: Alexivic 7
Autor: Alexivic Domingo, 25 de junho de 2023
diferentes podem ser lidas em ordem diferente, no entanto, quando dois usuários
tentarem ler, eles deverão obter o mesmo resultado. Exemplo: Se o usuário 1 enviar a
mensagem P e o usuário 2 enviar a mensagem Q, os usuários 3 e 4 podem “ler” Q antes
de P. No entanto, em um determinado intervalo de tempo, esses usuários irão “ler”
apenas Q. Após isso, eles irão “ler” apenas P. Diante do exposto, qual(is) modelo(s) de
consistência você deve implementar no software de controle de mensagens dessa lista?
Argumente a favor da sua escolha.
R: Dada a situação apresentada, em que os assinantes da lista de e-mail possuem réplicas locais
dos dados enviados para a lista, existem dois requisitos principais a serem considerados: a ordem
de entrega das mensagens de um mesmo usuário e a consistência entre os usuários ao lerem as
mensagens.
Considerando esses requisitos, uma possível escolha para o modelo de consistência seria o modelo
de consistência sequencial. Esse modelo garante a ordem total das operações realizadas por um
mesmo usuário, ou seja, as mensagens enviadas por um usuário serão lidas pelos outros usuários
na mesma ordem em que foram enviadas (requisito a).
Além disso, o modelo de consistência sequencial também assegura que as operações de diferentes
usuários sejam vistas pelos demais usuários em uma ordem global, chamada de ordem
linearizável. Isso significa que, embora as mensagens de diferentes usuários possam ser lidas em
ordens diferentes pelos assinantes, durante um determinado intervalo de tempo, todos os usuários
verão as mensagens em uma mesma ordem (requisito b).
17. No que diz respeito ao acesso a regiões críticas, como podemos diferenciar o mecanismo
de consistência fraca do mecanismo de consistência de atualização?
Uma abordagem comum para resolver esses problemas de inconsistência é utilizar protocolos de
replicação de dados que garantam a consistência entre as réplicas.
19. Um SD que funciona 8 horas ininterruptamente mas fica desligado a noite e todo o fim
de semana é um SD com disponibilidade ou com confiabilidade? Por que?
R: Um Sistema Distribuído (SD) que funciona apenas 8 horas ininterruptamente durante o dia e fica
desligado à noite e durante todo o fim de semana pode ser considerado um SD com
disponibilidade, mas não necessariamente com confiabilidade. Vamos entender o motivo:
Autor: Alexivic 8
Autor: Alexivic Domingo, 25 de junho de 2023
O sistema descrito pode ser considerado disponível durante as 8 horas de funcionamento diário,
mas não é confiável em termos de operação contínua e fornecimento de resultados corretos em
período integral. Para ser considerado confiável, um sistema geralmente precisa estar operacional
de forma contínua e fornecer resultados consistentes e corretos ao longo do tempo.
20. Quais são os passos executados para que um usuário consiga obter um arquivo remoto
através do sistema NFS?
R: Para que um usuário consiga obter um arquivo remoto através do sistema NFS (Network File
System), os seguintes passos são executados:
R: Na situação descrita, onde um usuário deseja fazer uma transferência eletrônica de dinheiro
entre os bancos A e B, é importante escolher a semântica de execução apropriada para garantir a
corretude e consistência das operações. Considerando que as operações bancárias não são
idempotentes e que é necessário executar a operação de transferência, as semânticas de execução
apropriadas podem ser:
Autor: Alexivic 9
Autor: Alexivic Domingo, 25 de junho de 2023
22. Checkpointing e Logging são duas técnicas para recuperação de mensagens. Qual é o
principal problema quando se adota um checkpointing independente? Qual a diferença
entre essas duas técnicas?
Autor: Alexivic 10