SóProvas


ID
702907
Banca
AOCP
Órgão
BRDE
Ano
2012
Provas
Disciplina
Sistemas Operacionais
Assuntos

Sobre correção de um Deadlock, analise as assertivas e assinale a alternativa que aponta a(s) correta(s).

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.

Alternativas
Comentários
  • 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. 

    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.

    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:

    • 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;
    • 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.
  • lembrando, também, que deve atender a todas essas condições para a ocorrencia de um deadlock:

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

  • O comentário de Breno R. está em parte incorreto. Segundo Tanenbaum(Sistemas Operacionais Modernos, 3Ed.) o S.O deve sim ser capaz de detectar uma situação de deadlock. Oque não é aconselhável é que o S.O implemente um algoritmo para prevenção de deadlock uma vez que seria muito custoso. Tanto o Windows como o Linux implementam o algoritmo do avestruz, eles só tratam a situação de deadlock na sua ocorrência, que na verdade é considerada rara.

    O ítem II está errado quando afirma que o deadlock não tem correção.