Você está na página 1de 6

Lista de Exercício NP3

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.

(2) Podemos permitir que o sistema entre em estado de deadlock, detecte-o e se


recupere;
a. Nesse ambiente, o sistema pode fornecer um algoritmo que examine seu
estado para determinar se um deadlock ocorreu e um algoritmo para se
recuperar do deadlock (se um deadlock realmente ocorreu).

(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.

3. Explique a técnica de paginação.


Envolve a fragmentação da memória física em blocos de tamanho fixo chamados de
quadros e a fragmentação da memória lógica em blocos do mesmo tamanho
chamados páginas.
Quando o processo está para ser executado, suas páginas são carregadas em quaisquer
quadros de memória disponíveis a partir de sua origem (um sistema de arquivos ou a
memória de retaguarda).
A memória de retaguarda é dividida em blocos de tamanho fixo que são do mesmo
tamanho dos quadros da memória ou clusters de múltiplos quadros.
O espaço de endereçamento lógico é agora totalmente separado do espaço de
endereçamento físico; assim, um processo pode ter um espaço de endereçamento
lógico de 64 bits, ainda que o sistema tenha menos de 2^64 bytes de memória física.

4. Sobre memória virtual, explique as principais características dessa técnica e quais as


diferenças entre memória virtual e memória principal.
A memória virtual é uma técnica que permite a execução de processos que não estão
totalmente na memória.
- A memória virtual abstrai a memória principal em um array de armazenamento
uniforme extremamente grande, separando a memória lógica da memória física.
- Permite que os processos compartilhem arquivos facilmente e implementem a
memória compartilhada e fornece mecanismos eficientes para criação de processos.
- As bibliotecas do sistema podem ser compartilhadas por vários processos através do
mapeamento do objeto compartilhado para um espaço de endereçamento virtual.
- Processos podem compartilhar memória.
- As páginas podem ser compartilhadas durante a criação de processos com a chamada
de sistema fork(), acelerando assim a criação de processos.
- Deve ser usada com parcimônia.

5. Explique todas as condições para que ocorra um deadlock.


- Para a existência de um deadlock 4 situações devem ocorrer simultaneamente:

 Exclusão Mútua: apenas um processo de cada vez pode usar o recurso;


 Retenção e Espera: processo de posse de um recurso e a espera de
outro(s) recurso(s) adicional(is) retido(s) por outro(s) processo(s);
 Inexistência de Preempção: o(s) recurso(s) não pode(m) ser
interceptado(s), somente voluntariamente pelo processo que estiver
utilizando;
 Esperar Circular: deve haver um conjunto de processos nos quais um esteja
esperando pelo outro e o último esperando pelo primeiro.

6. Descreva as características das estratégias de alocação best-fit, worst-fit e First fit.


Elabore um exemplo (pode ser desenhando) com um processo precisando ser alocado
em uma partição da memória principal para cada uma das estratégias.
a. Primeiro-apto (first-fit): aloca a primeira brecha que seja suficientemente
grande.

b. Mais-apto (best-fit): aloca a menor brecha que seja suficientemente grande.


Produz a brecha com menos espaço sobrando.
c. Menos-apto (worst-fit): aloca a maior brecha. Produz a brecha com mais
espaço sobrando que pode ser mais útil que a brecha do “mais-apto”.

Alocação Max Necessidade Disponível


A B C A B C A B C A B C
10 5 7
3 3 2
P0 0 1 0 7 5 3 7 4 3 2 1 0
P1 2 0 0 3 2 2 1 2 2 1 0 1
P2 3 0 2 9 0 2 6 0 0 5 3 4
P3 2 1 1 2 2 2 0 1 1 7 4 5
P4 0 0 2 4 3 3 4 3 1 0 0 2
7 2 5 25 12 12 18 10 7 1 5 5

Utilizando o algoritmo do banqueiro, preencha a tabela “necessidade”, diga se o sistema


está em modo seguro ou não, caso esteja em modo seguro, demonstre o passo a passo da
execução e da alocação, além da sequência que atende a condição de segurança.
P1 – 1/2/2 disponível 2/1/0, ao terminar 5/3/2
P4 – 4/3/1 disponível 1/0/1, ao terminar disponível 5/3/4
P3 – 0/1/1 disponível 5/2/3, ao terminar disponível 7/4/5
P0 – 7/4/3 disponível 0/0/2, ao terminar disponível 7/5/5
P2 – 6/0/0 disponível 1/5/5, ao terminar disponível 10/5/7
7. Diferencie memória volátil de não volátil, apresentando exemplos e aplicações de cada
uma delas.
A memória volátil perde seus conteúdos quando a energia para o dispositivo é
removida. Na ausência de dispendiosos sistemas de backup por bateria ou gerador, os
dados devem ser gravados em memória não volátil, por segurança. Na hierarquia
mostrada na Figura 1.4, os sistemas de armazenamento situados acima do disco de
estado sólido são voláteis enquanto os que o incluem e estão abaixo dele são não
voláteis.

Normalmente, a memória principal é um dispositivo de armazenamento volátil que


perde seu conteúdo quando a energia é desligada ou perdida. A maioria dos sistemas
de computação fornece memória secundária como uma extensão da memória
principal. A memória secundária fornece um tipo de armazenamento não volátil que
pode manter grandes quantidades de dados permanentemente. O dispositivo de
memória secundária mais comum é o disco magnético, que fornece armazenamento
tanto de programas quanto de dados.
A grande variedade de sistemas de armazenamento em um sistema de computação
pode ser organizada em uma hierarquia de acordo com a velocidade e o custo. Os
níveis mais altos são caros, mas são velozes. Conforme descemos na hierarquia, em
geral o custo por bit diminui, enquanto o tempo de acesso aumenta.

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.

9. Explique as diferenças entre compartilhamento de arquivos em sistemas cliente-


servidor e sistemas distribuídos descentralizados.
- Cliente-Servidor:
 Um ou mais de um computador (servidor) monta um ou mais sistemas de
arquivos para que sejam acessados/buscados por outros computadores
(cliente).
 Um servidor pode atender a múltiplos clientes e um cliente pode acessar
múltiplos servidores, dependendo dos detalhes de implementação de
determinada instalação cliente-servidor.

- Sistemas distribuídos descentralizados:


 Fornecem acesso unificado às informações requeridas pela computação
remota.
 Uma vez estabelecido, o recurso de nomeação distribuída é usado por todos os
clientes e servidores para autenticar usuários.

Você também pode gostar