SóProvas


ID
2297587
Banca
FCC
Órgão
PGE-MT
Ano
2016
Provas
Disciplina
Banco de Dados
Assuntos

Considere que existem muitas transações em um banco de dados. A transação A faz a requisição de um bloqueio compartilhado de um item de dado. Logo em seguida a transação B faz uma requisição de bloqueio exclusivo do mesmo item. Enquanto a transação B está na fila, chega o pedido da transação C que consegue bloqueio compartilhado do mesmo item. Quando a transação A desocupa o item de dado, ele é ocupado pela transação C. Enquanto isso, a transação B continua aguardando a liberação total do item de dado para que possa fazer o bloqueio exclusivo. Em seguida chegam novas transações de acesso compartilhado deste mesmo item, o que faz com que a transação B nunca consiga fazer progresso. Isso é conhecido como

Alternativas
Comentários
  • starvation é diferente de deadlock

     

     

    deadlock é quando A precisa um recurso que está com B e este preciso um recurso daquele.

     

    Starvation é quando tem um processo que nunca (ou dificilmente) terá a oportunidade de ser executado

  • Em alguns casos, essas definições parecem se confundir, dependendo da abordagem.

     

    Normalmente eu acerto questões que envolvem Deadlock e Starvation, mas dessa vez fui pego.

  • Gabarito E

    Acredito que as palavras nunca ou dificilmente, podem ser associadas a Starvation como ajuda nas provas.

    Vamos na fé !

     

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

  • Acredito que o que possa ajudar também é que, no Starvation, não há uma necessária relação entre os processos, ou seja, dá para imaginar uma fila, em que um vai passando na frente do outro e alguns podem não ser escolhidos para processamento.

     

    Já com relação ao Deadlock, é quando os processos ficam entrelaçados um ao outro, formando um ciclo fechado, em que nenhum deles consegue seguir com o processamento.

     

    É aquilo, com as definições separadas fica um pouco mais fácil compreender, mas às vezes o enunciado traz uma pequena história, como nessa questão, que pode confundir.

  • Ao ler com atenção, vc observa no trecho "faz com que a transação B nunca consiga fazer progresso" que apenas B está sendo prejudicado no processo.

    Para ocorrer Deadlock são necessárias, no mínimo, as duas condições abaixo:

    1ª Duas transações, no mínimo, ao mesmo tempo. Note que apenas B está sofrendo, logo se descarta deadlock.
    2ª Um registro interessado por um está sendo mexido por outro e este está mexendo em um registro interessado pelo primeiro... eles ficam dependentes um do outro...

    Starvation é a mesma coisa que "inanição". Tipo "matar o cara de fome", por não alimentá-lo. É o que acontece nessa situação. O processo B nunca será atendido devido a outros processos que vão chegando e tendo prioridade sobre ele... como consequência B sofre starvation.

  • Starvation acontece quando a transação fica dando mole esperando por um recurso, enquanto as outras transações (bem malandras) pulam a vez e pegam o recurso.

  • LETRA E

    Deadolock - A espera Recurso B, este está Bloqueado e B espera recurso de A, este está bloqueado - OU SEJA nenhum dos dois receberá o recurso, a menos que o sistema intervenha.

    Starvation - Quando B tem uma requisição de BLOQUEIO EXCLUSIVA e requisições de BLOQUEIO COMPARTILHADO são chamdas primeiro.

  • Excelente comentário, @Mr.Robot.

  • Alternativa correta: E. 

     

    Pessoal, a palavra-chave que identifica o starvation é prioridade. No starvation, uma transação não recebe recursos pois possui menos prioridade que outras transações, e estas acabam passando na frente daquela. Na questão ficou claro no exemplo que a transação C passou na frente da B pois tem maior prioridade (ocupa menos recursos). 

     

    Já no deadlock a questão não envolve prioridade, mas espera circular (A espera B e B espera A). 

  • STARVATION = MORRE DE FOME (PRIORIDADE BAIXA OU QUASE NENHUMA)

     

    Go ahead!!!

  • Veja que nesse caso a transação A fica eternamente aguardando para obter um bloqueio exclusivo do item, enquanto que várias outras transações conseguem adquirir e liberar bloqueios compartilhados em relação ao mesmo item.

    Esse é um exemplo clássico de starvation, caso em que uma transação aguarda indefinidamente para realizar operações sobre um item, enquanto outras transações que chegaram depois conseguem fazê-lo normalmente.

    Gabarito: E