Punto muerto contra inanición
La principal diferencia entre punto muerto e inanición es la relación de causa y efecto entre ellos; es el estancamiento lo que provoca el hambre. Otra diferencia interesante entre el punto muerto y el hambre es que el punto muerto es un problema, mientras que el hambre puede, a veces, ayudar a salir de un punto muerto. En el mundo de la informática, al escribir un programa de computadora, habrá más de un proceso/hilo que se ejecutará simultáneamente uno tras otro para cumplir con el servicio requerido para el programa. Por lo tanto, para tener un sistema justo, el programador debe asegurarse de que todos los procesos/subprocesos recibirán u obtendrán suficiente acceso a los recursos que necesitan. Si no, habrá un callejón sin salida y conducirá a una inanición más tarde. En general, un sistema justo no contiene puntos muertos ni situaciones de inanición. Los interbloqueos y las inaniciones se producirán principalmente cuando muchos subprocesos compitan por recursos limitados.
¿Qué es interbloqueo?
Un interbloqueo es una condición que ocurre cuando dos subprocesos o procesos esperan el uno al otro para completar la tarea. Solo colgarán, pero nunca se detendrán ni terminarán su tarea. En informática, los interbloqueos se pueden ver en todas partes. En una base de datos de transacciones, cuando dos procesos, cada uno dentro de su propia transacción, actualizan las mismas dos filas de información pero en el orden opuesto, se producirá un interbloqueo. En la programación concurrente, puede ocurrir un interbloqueo cuando dos acciones en competencia esperarán la una a la otra para avanzar. En los sistemas de telecomunicaciones, puede ocurrir un interbloqueo debido a la pérdida o corrupción de las señales.
En la actualidad, el interbloqueo es uno de los principales problemas en los sistemas de multiprocesamiento y computación paralela. Como solución, se implementa un sistema de bloqueo llamado sincronización de procesos tanto para el software como para el hardware.
¿Qué es el hambre?
Del diccionario de la ciencia médica, el hambre es el resultado de una f alta grave o total de nutrientes necesarios para el mantenimiento de la vida. De manera similar, en informática, el hambre es un problema que se encuentra cuando varios subprocesos o procesos esperan el mismo recurso, lo que se denomina interbloqueo.
Para salir de un punto muerto, uno de los procesos o subprocesos debe darse por vencido o retroceder para que el otro subproceso o proceso pueda usar el recurso. Si esto sucede continuamente y el mismo proceso o subproceso tiene que darse por vencido o retroceder cada vez mientras permite que otros procesos o subprocesos usen el recurso, entonces el proceso o subproceso seleccionado, que retrocedió sufrirá una situación llamada inanición. Por lo tanto, para salir de un callejón sin salida, el hambre es una de las soluciones. Por lo tanto, a veces el hambre se llama una especie de candado vivo. Cuando hay muchos procesos o subprocesos de alta prioridad, un proceso o subproceso de menor prioridad siempre morirá de hambre en un punto muerto.
Puede haber muchas situaciones de inanición, como privación de recursos y privación de CPU. Hay muchos ejemplos comunes sobre el hambre. Son el problema de los lectores y escritores y el problema de los filósofos comedores, que es más famoso. Hay cinco filósofos silenciosos sentados en una mesa redonda con tazones de espagueti. Se colocan tenedores entre cada par de filósofos adyacentes. Cada filósofo debe alternativamente pensar y comer. Sin embargo, un filósofo solo puede comer espaguetis cuando tiene tenedor derecho e izquierdo.
Los "filósofos de la cena"
¿Cuál es la diferencia entre Deadlock y Starvation?
Proceso:
• En interbloqueo, los dos subprocesos o procesos se esperarán el uno al otro y ninguno avanzará.
• En la inanición, cuando dos o más subprocesos o procesos esperan el mismo recurso, uno retrocederá y permitirá que los demás usen el recurso primero y, a continuación, el subproceso o el proceso con inanición volverá a intentarlo. Por lo tanto, todos los subprocesos o procesos seguirán adelante.
Retroceso:
• En un interbloqueo, tanto los subprocesos/procesos de alta prioridad como los subprocesos/procesos de baja prioridad se esperarán unos a otros infinitamente. Nunca termina.
• Pero, en caso de inanición, los de baja prioridad esperarán o retrocederán, pero los de alta prioridad continuarán.
Esperando o Bloqueado:
• Un interbloqueo es una espera circular.
• La inanición es una especie de bloqueo vital y, a veces, ayuda a salir de un punto muerto.
Punto muerto y hambre:
• Un punto muerto provoca inanición, pero la inanición no provoca un punto muerto.
Causas:
• Se producirá un interbloqueo debido a exclusión mutua, retención y espera, sin preferencia o espera circular.
• La inanición se produce debido a la escasez de recursos, la gestión descontrolada de los recursos y las prioridades de los procesos.
Resumen:
Punto muerto frente a inanición
Los interbloqueos y las inaniciones son algunos de los problemas que se producen debido a las carreras de datos y las condiciones de carrera que se producen durante la programación y la implementación del hardware. En un interbloqueo, dos subprocesos esperarán infinitamente el uno al otro sin ejecutarse mientras que, en un estado de inanición, un subproceso retrocederá y permitirá que el otro utilice los recursos. Un interbloqueo provocará inanición, mientras que la inanición ayudará a un subproceso a salir de un punto muerto.