SóProvas


ID
1419373
Banca
FCC
Órgão
TCE-GO
Ano
2014
Provas
Disciplina
Sistemas Operacionais
Assuntos

Não ocorre deadlock em um sistema de multiprogramação em que

Alternativas
Comentários
  • Bom, vou esperar a explicação de alguém, mas eu fui na letra A sem medo.

    Meu raciocínio foi: Se há uma exclusão mútua, não há como ter deadlock, no máximo starvation

    Mas concordo que a letra E está certa também, se não há compartilhamento, não tem como ter deadlock

  • Raphael, 

    No livro do Silbershatz "Sistemas Operacionais, Conceitos e Aplicações" no capitulo 8.2.1, diz que os deadlocks somente ocorrerão se quatro condições acontecerem simultaneamente.

    Condições:

    • Exclusão Mútua: (alternativa A)
    • Posse e Espera: (alternativa B)
    • Não-preempção: (alternativa C)
    • Espera Circular: (alternativa D)

    Minha conclusão: A questão é meio estranha, sendo necessário optar pela alternativa menos errada, pois a existência de qualquer das condições de deadlock não significa que ocorrerá deadlock.

  • Da wiki "O deadlock ocorre com um conjunto de processos e recursos não preemptives, onde um ou mais processos deste conjunto esta aguardando a liberação de um recurso por um outro processo...". Dado que a letra E afirma que não há recurso compartilhado logo não existe disputa por recurso, logo não é possível ocorrer deadlock.

  • Gabarito E

    Em muitas aplicações, observamos a necessidade de se garantir a um processo, acesso exclusivo a certos recursos. Imaginem, por exemplo, a confusão causada se dois processos usassem a impressora simultaneamente! O resultado certamente não seria o esperado.

    Situações como esta são pertinentes num sistema de computação e exemplos típicos de recursos que só podem ser usados por um processo de cada vez incluem impressoras, unidades de fita e registros em um sistema de banco de dados.

    Em sistemas multiprogramados essa questão torna-se mais difícil de se gerenciar, ao contrário dos sistemas monoprogramados onde o único processo pode simplesmente adquirir acesso a todos os recursos de que precisa e fazer seu trabalho. Numa situação em que dois processos estão bloqueados e assim permanecerão indefinidamente, cada um esperando por um evento que somente o outro poderá fazer acontecer, teremos a ocorrência de um deadlock.

    Suponha por exemplo, que existam dois processos, A e B, cada um dos quais querendo scannear um arquivo armazenado em fita. O processo A solicita e consegue permissão para usar a fita. O processo B requer e também consegue permissão para usar o scanner. A seguir, o processo A pede permissão para usar o scanner, mas a solicitação não vai poder ser atendida até que o processo B o libere. Infelizmente, em vez de liberar o scanner, B solicita permissão para usar a fita. Neste ponto, ambos os processos estão bloqueados, e assim permanecerão para sempre. Temos, portanto, uma situação de deadlock.

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • A condição de exclusão mútua deve estar presente. Isto é, pelo menos um recurso deve ser não compartilhável. Recursos
    compartilháveis, por outro lado, não requerem acesso mutuamente exclusivo e, portanto, não podem estar envolvidos em
    um deadlock. Arquivos somente de leitura são um bom exemplo de recurso compartilhável. Se vários processos tentam
    abrir um arquivo somente de leitura ao mesmo tempo, podem conseguir acesso simultâneo ao arquivo. Um processo
    nunca precisa esperar por um recurso compartilhável.Silbershatz "Sistemas Operacionais, Conceitos e Aplicações" cap 7 item 7.4

  • e-

    Deadlock é um probelma que pode surgir ate em uma comunidade que coopera ou cpmpete por RECURSOS. Ele é uma falha, e nao um erro porque ocorre quando mais de 1 processo requer 1 recurso ao mesmo tempo. O deadlock é uma situação onde os processos nunca concluirao sem recuperacao. O deadlock ocorre com recursos como dispositivos, arquivos, memoria, entre outros. 

    Condicoes;

     

    1- mutex (exlcusao mutua) - o recurso ou esta livre ou ocupado

    2- posse e espera - processos retêm recursos precisados antes podem necessitar nvos recursos. 

    3- nao preempcao - processo tem que liberar recurso por seus meios. Lembrando escalonamentos nao preemptivos sao FIFO (first on first served), SJF (shortest job first) e cooperacao (processo libera CPU por seus proprios criterios. Problema é risco de looping)

    4- espera circular - uma cadeia de processos, cada 1 necessitando o recurso usado pelo seguinte.

     

    Tratamento de deadlocks:

    1- deteccao e recuperacao - estrutura de dados que pega informacao dos processos e status para detectar e impedir deadlock; essa atualizacao é custosa porque causa overhead. 

    2- evitar edadlock- SO decide se liberar recurso é seguro ou nao.

    3- prevencao - eliminar pelo menos 1 das 4 condicoes.