Sobre correção de um Deadlock, analise as assertivas ...
I. Após a detecção do deadlock, o sistema deverá corrigir o problema. Uma solução bastante utilizada pela maioria dos sistemas operacionais é, simplesmente, eliminar um ou mais processos envolvidos no deadlock e desalocar os recursos já garantidos por eles, quebrando assim a espera circular.
II. Um deadlock não tem correção, uma vez que o processo em execução aguarda um evento que nunca mais ocorrerá. O sistema operacional deve ser apto a identificar e eliminar um processo em deadlock.
III. Uma solução menos drástica envolve a liberação de apenas alguns recursos alocados aos processo para outros processos, até que o ciclo de espera termine.
IV. A eliminação dos processo envolvidos no deadlock e, consequentemente, a liberação de seus recursos podem não ser simples, dependendo do tipo do recurso envolvido.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é: C - Apenas I, III e IV.
Vamos discorrer sobre cada uma das assertivas para entender os conceitos envolvidos no tema de Deadlock e justificar as respostas corretas:
Assertiva I: Após a detecção do deadlock, o sistema deverá corrigir o problema. Uma solução bastante utilizada pela maioria dos sistemas operacionais é, simplesmente, eliminar um ou mais processos envolvidos no deadlock e desalocar os recursos já garantidos por eles, quebrando assim a espera circular.
Essa afirmativa está correta. Quando um deadlock é detectado, uma solução comum é a eliminação dos processos envolvidos para liberar os recursos alocados. Isso quebra o ciclo de espera circular, que é uma das condições necessárias para a ocorrência de um deadlock.
Assertiva II: Um deadlock não tem correção, uma vez que o processo em execução aguarda um evento que nunca mais ocorrerá. O sistema operacional deve ser apto a identificar e eliminar um processo em deadlock.
Essa afirmativa está incorreta. Um deadlock pode ser corrigido através de várias técnicas, incluindo a eliminação de processos ou a preempção de recursos. Portanto, dizer que um deadlock não tem correção é um erro.
Assertiva III: Uma solução menos drástica envolve a liberação de apenas alguns recursos alocados aos processos para outros processos, até que o ciclo de espera termine.
Essa afirmativa está correta. Outra abordagem menos drástica que a eliminação de processos é a preempção de recursos. Ao liberar alguns recursos e alocá-los a outros processos, o sistema pode quebrar o ciclo de espera, resolvendo assim o deadlock.
Assertiva IV: A eliminação dos processos envolvidos no deadlock e, consequentemente, a liberação de seus recursos podem não ser simples, dependendo do tipo do recurso envolvido.
Essa afirmativa está correta. A eliminação dos processos e a liberação de recursos nem sempre são tarefas simples. A complexidade pode variar dependendo do tipo de recurso e do estado do sistema no momento do deadlock.
Portanto, a alternativa correta é a C, que considera as assertivas I, III e IV como corretas. Espero que essa explicação tenha ajudado você a entender melhor o assunto de Deadlock em Sistemas Operacionais. Caso tenha mais dúvidas, sinta-se à vontade para perguntar!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Deadlock (interbloqueio, -blocagem, impasse), no contexto do sistemas operacionais (SO), caracteriza uma situação em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados. Trata-se de um problema bastante estudado no contexto dos Sistemas Operacionais, assim como em outras disciplinas, como banco de dados, pois é inerente à própria natureza desses sistemas.
O deadlock ocorre com um conjunto de processos e recursos não-preemptíveis, onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por um outro processo que, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.
A definição textual de deadlock normalmente, por ser muito abstrata, é mais difícil de se compreender do que a representação por grafos, que será resumida mais adiante. No entanto, algumas observações são pertinentes:
- O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que este processo utilize múltiplos threads e que tais threads requisitem os recursos alocados a outrosthreads no mesmo processo;
- O deadlock independe da quantidade de recursos disponíveis no sistema;
- Normalmente o deadlock ocorre com recursos como dispositivos, arquivos, memória, etc. Apesar da CPU também ser um recurso para o SO, em geral é um recurso facilmente preemptível, pois existem os escalonadores para compartilhar o processador entre os diversos processos, quando trata-se de um ambiente multitarefa.
- Condição de não-preempção: recursos já alocados a processos não podem ser tomados a força. Eles precisam ser liberados explicitamente pelo processo que detém a sua posse;
- Condição de exclusão mútua: cada recurso ou está alocado a exatamente um processo ou está disponível;
- Condição de posse-e-espera: cada processo pode solicitar um recurso, ter esse recurso alocado para si e ficar bloqueado esperando por um outro recurso;
- Condição de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que está com o próximo membro da cadeia.
Completando o comentário do Mario Filho:
A afirmativa II diz que "o Sistema Operacional deve ser apto a identificar e a eliminar um processo em deadlock."
Considerei essa afirmação também como errada, pois um SO não tem tal obrigação. De acordo com Tanenbaum, "a maioria dos sistemas operacionais, incluindo Unix e Windows, simplesmente ignora o problema, supondo que a maior parte dos usuários preferiria um deadlock ocasional a uma regra que restrinja cada usuário a somente um processo". Além disso, há outra opção para lidar com deadlocks, que é a sua prevenção (ao invés de deixar que o deadlock ocorra, detectá-lo/identificá-lo e então resolver a situação).
Para ficar mais fácil a compreensao da ocorrencia de deadlocks, imagine um processo P1 detendo a execução do processador no tempo T1. E o processo P2 detendo uma unidade de DVD-R no mesmo tempo T1.
Haverá deadlock se houver todas as 4 condições abaixo com ambos os processos, P1 e P2.
Condição de não-preempção: o processo P2 não poderá obter o processador de P1 até q este, explicitamente o libere.
Condição de exclusão mútua: Ou a CPU está aloca a P1 ou a P2.
Condição de posse-e-espera: P1 solicita a CPU, obtem-na, e fica bloqueado, esperando E/S(porém, de posse da CPU).
Condição de espera circular: P1 tem a CPU e está esperando um dado do DVD para ler; P2 tem o DVD e está esperando a CPU para processar.
PS: considere q no ultimo caso, não há recurso de DMA, presente na maioria das controladoras de DVD atuais.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo