No diría que la falta de recursos es un caso especial de un bloqueo en tiempo real.Por lo general:
En un bloqueo en tiempo real, ningún hilo avanza, pero siguen ejecutándose. (En un interbloqueo, ni siquiera continúan ejecutándose)
Cuando mueren de hambre, algunos subprocesos HACEN progreso y algunos subprocesos no se están ejecutando.
Una buena explicación: http://docs.oracle.com/javase/tutorial/essential/concurrency/starvelive.html. Pero entiendo que la elección de la terminología puede variar.
Cuando se trata de la inanición, la definición que oí es:
Supongamos que es posible especificar una ruta infinita de ejecución (entrelazado) coherente con las hipótesis (semántica de semáforos, comportamiento del programador OS ...) de tal manera que el hilo T se suspende esperando algún recurso y nunca se reanuda, incluso si fue posible infinitamente muchas veces. Entonces T se llama morir de hambre.
Pero la práctica no coincide con eso. Supongamos que dos hilos ejecutan una sección crítica en un ciclo infinito. Su código de sincronización permite que el primer hilo ingrese a la sección crítica una vez por hora. ¿Es inanición? Ambos subprocesos pueden progresar, pero el primero está haciendo su trabajo de forma dolorosamente lenta.
La fuente más simple de inanición son los semáforos débiles. Si está utilizando una primitiva de sincronización (o construye la suya propia) que se comporta de manera similar, se producirá la inanición.
problemas clásicos, donde el hambre es bien conocida:
Para más detalles, yo recomiendo de todo corazón El pequeño libro de semáforos (gratis): http://www.greenteapress.com/semaphores/.
Usted está preguntando si cada inanición es causada por la espera de algún recurso. Yo diría que sí.
Un hilo puede ser suspendido:
(1) en alguna llamada de sistema de bloqueo - en espera en/adquisición de un mutex, semáforos, variables condicional; write(), poll() etc.
(2) en alguna operación sin bloqueo, como la realización de cálculos.
Starving on (1) está muriendo de hambre en los recursos (mutexes, buffer, etc.).
Starving on (2) está muriendo de hambre en la CPU: puede considerarlo como un recurso. Si sucede, el problema es con el programador.
HTH
Mientras habla sobre el tema, también debería verificar Lock Convoys, son muy interesantes. Y desagradable. http://en.wikipedia.org/wiki/Lock_convoy –
Incluso si fuera tarea, sería la pregunta de tarea mejor escrita que jamás haya visto en SO. –