Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Em geral, existem algumas formas de lidar com deadlocks, onde cada opção apresenta
vantagens e desvantagens. Descreva sobre todas as formas de lidar com deadlocks que
vimos em sala de aula, explicando como elas influenciam na execução dos processos e
no desempenho do computador.
(1) Podemos usar um protocolo para impedir ou evitar a ocorrência de deadlocks,
assegurando que o sistema nunca entrará em estado de deadlock;
a. Prevenção: Fornece um conjunto de métodos para assegurar que pelo menos
uma das condições necessárias (exclusão mútua, retenção e espera,
inexistência de preempção e espera circular) não possa ocorrer. Os possíveis
efeitos colaterais da prevenção de deadlocks por meio desses métodos são a
baixa utilização dos dispositivos e um throughput(vazão) do sistema reduzido.
b. Impedimento: Restringem como as solicitações de recursos podem ser feitas e
para isso, devem receber antecipadamente informações adicionais
relacionadas com os recursos que um processo solicitará e usará durante o seu
tempo de vida. Considera os recursos concorrentes disponíveis, os alocados, as
futuras solicitações e suas liberações para decidir se a solicitação corrente
pode ou não ser atendida. Os algoritmos que usam essa abordagem diferem
no montante e no tipo de informações requeridas:
i. Estado Seguro: o sistema pode alocar recursos a cada processo (até o
seu máximo) em alguma ordem e continuar evitando um deadlock.
ii. Algoritmo do Grafo de Alocação de Recursos: caso tenhamos somente
uma instância de cada tipo de recurso, esse grafo pode ser utilizado.
Além das arestas de solicitação, é introduzida a aresta de requisição.
iii. Algoritmo do Banqueiro: quando um novo processo entra no sistema,
deve declarar o número máximo de instâncias de cada tipo de recurso
de que pode precisar. Não pode exceder o número total de recursos do
sistema.
(3) Podemos ignorar o problema completamente e fingir que deadlocks nunca ocorrem no
sistema. Esta opção é a usada pela maioria dos SOs (incluindo Linux e Windows).
a. Na ausência de algoritmos para detecção e recuperação de deadlocks,
podemos chegar a uma situação em que o sistema está em estado de deadlock
sem ter maneira de reconhecer o que ocorreu, resultando na deterioração do
desempenho do sistema pq os recursos estão sendo mantidos por processos
que não podem ser executados e pq mais processos, ao fazerem solicitações
de recursos, entrarão em estado de deadlock. Eventualmente, o sistema irá
parar e terá que ser reiniciado manualmente.
b. O custo é uma consideração importante. Ignorar a possibilidade de ocorrência
de deadlocks é mais barato do que as outras abordagens.
2. Diferencie fragmentação externa e interna.
(1) Fragmentação externa ocorre quando há espaço total na memória suficiente para
atender a uma solicitação, mas os espaços disponíveis não são contíguos: a memória
está fragmentada em um grande número de pequenas brechas. Uma solução para o
problema da fragmentação externa é a compactação. O objetivo é mesclar os
conteúdos da memória para unir toda a memória disponível em um grande bloco. No
entanto, a compactação nem sempre é possível. Se a relocação for estática e feita em
tempo de montagem ou de carga, a compactação não poderá ser realizada. Ela é
possível apenas se a relocação for dinâmica e feita em tempo de execução. Se os
endereços são relocados dinamicamente, a relocação requer somente a transferência
do programa e dos dados e, depois, a alteração do registrador base para refletir o novo
endereço base. Quando a compactação é possível, devemos determinar seu custo. O
algoritmo de compactação mais simples move todos os processos para uma
extremidade da memória; todas as brechas são movimentadas para a outra
extremidade, produzindo uma grande brecha de memória disponível. Esse esquema
pode ser dispendioso.
(2) Fragmentação interna ocorre quando a memória é alocada em unidades com base na
memória física particionada em blocos de tamanho fixo. A memória alocada a um
processo pode ser uma pouco maior que a memória solicitada e a diferença entre
esses dois números é a fragmentação interna.
8. Como os sistemas de arquivos distribuídos lidam com a consistência dos dados entre
os diferentes nós da rede?
- Através das semânticas de consistência que:
(1) especificam como múltiplos usuários de um sistema devem acessar um
arquivo compartilhado simultaneamente;
(2) definem quando as modificações nos dados feitas por um usuário poderão
ser observadas por outros usuários;
(3) Semânticas de Sessão: um arquivo pode ser associado temporariamente a
várias imagens (possivelmente diferentes) ao mesmo tempo. Múltiplos usuários são
autorizados a ler e gravar em suas imagens do arquivo, concorrentemente e sem
atraso.
(4) Semânticas de Arquivos Compartilhados Imutáveis: quando um arquivo é
declarado como compartilhado por seu criador, não pode ser ter seu nome e conteúdo
modificados.