¿Qué son el "punto muerto" y la "hambruna"?
Punto muerto: Se puede considerar como dos hilos o procesos que solicitan recursos ocupados entre sí.
Hambriento: un subproceso espera indefinidamente a que dos o más subprocesos se pasen recursos entre sí y utilicen recursos que no se liberarán.
Se producirá un punto muerto cuando se produzcan las siguientes cuatro situaciones:
1, mutuamente excluyentes. Un hilo o proceso siempre ocupa un recurso compartido, por ejemplo, es propietario exclusivo del recurso.
2. Espere en bucle. Por ejemplo, el proceso A está esperando el proceso B, el proceso B está esperando el proceso C y el proceso C está esperando el proceso A.
3. Asignación parcial. Los recursos se asignan parcialmente. Por ejemplo, tanto los procesos A como B necesitan acceder a un archivo y usar una impresora. El proceso A obtiene el recurso del archivo y el proceso B obtiene el recurso de la impresora, pero ninguno de los procesos puede obtener todos los recursos.
4. Falta de prioridad. Un proceso adquiere el recurso pero nunca lo libera, incluso si el proceso está bloqueado.
Información ampliada
La diferencia entre deadlock y livelock: Livelock y deadlock son muy similares. Sólo puede cambiar el estado del livelock. Sin embargo, aunque se puede cambiar el estatus, no hay ningún progreso real. Por ejemplo, dos personas están en un callejón muy residencial. Sólo podrán pasar dos personas una al lado de la otra a la vez. Los dos fueron más educados y tuvieron que ceder el paso el uno al otro. Como resultado, cedemos a la izquierda o a la derecha, pero nadie puede pasar. Similar a quedarse quieto o en estado de shock.
El livelock generalmente es causado por un manejo incorrecto de los interbloqueos. Porque varios subprocesos en un punto muerto actúan simultáneamente. La forma de evitar esto es permitir que solo un hilo libere recursos.