Além dos problemas relacionados a condições de corrida, a competição por recursos pode, ainda, provocar outros diferentes problemas para o Sistema Operacional, como a inanição (starvation) e o deadlock.

A inanição ocorre quando o acesso a um determinado recurso é sempre negado a um dado processo que, por este motivo, nunca consegue finalizar a sua execução.
Já o deadlock é a situação onde dois ou mais processos estão esperando uns pelos outros para terminar a tarefa, de modo que nenhum deles consegue efetivamente completar o processamento.

Assim como na condição de corrida, um problema hipotético foi construído para exemplificar os conceitos de deadlock e starvation. Imagine agora que, em um determinado momento, tem-se “N” filósofos sentados ao redor de uma mesa circular comendo spaghetti e discutindo filosofia. Cada filósofo tem um prato de spaghetti e entre cada prato existe um garfo. Os filósofos comem e pensam alternadamente, mas, para comer, precisam utilizar dois garfos.

A grande questão a ser resolvida é permitir que todos os filósofos consigam comer, mesmo que não simultaneamente. Para isso, o algoritmo tem que evitar que os filósofos acabem pegando um único garfo ao mesmo tempo – deadlock, ou que apenas dois dos filósofos monopolizem quatro dos garfos e faça com que os outros três nunca tenham acesso a comida – starvation.

Observe na figura que na situação de deadlock nenhum dos filósofos consegue executar a tarefa por estarem à espera da liberação de recursos uns dos outros.

Já na situação de starvation, os filósofos de número 2 e 5 monopolizam o recurso impedindo o acesso dos filósofos 1, 3 e 4 que, desta forma, abaram por morrer de inanição.

Copyright © 2014 AIEC.