La principal diferencia entre el punto muerto y la inanición es la relación de causa y efecto entre ellos; es un punto muerto que causa la inanición. Otra diferencia interesante entre el punto muerto y la inanición es que el punto muerto es un problema, mientras que la inanición puede, a veces, ayudar a salir de un punto muerto. En el mundo de la computación, al escribir un programa de computadora habrá más de un proceso / subproceso 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 reciban u obtengan suficiente acceso a los recursos que necesitan. Si no, habrá un punto muerto, y esto llevará a una inanición más tarde. En general, un sistema justo no contiene puntos muertos ni inaniciones. Los puntos muertos y las inaniciones se producirán principalmente cuando muchos subprocesos compitan por recursos limitados.
Un punto muerto es una condición que se produce cuando dos procesos o subprocesos esperan uno por el otro para completar la tarea. Solo colgarán pero nunca pararán o terminarán su tarea. En informática, los puntos muertos se pueden ver en todas partes. En una base de datos de transacciones, cuando dos procesos, cada uno dentro de su propia transacción, actualicen las mismas dos filas de información pero en el orden opuesto, causarán un interbloqueo. En la programación concurrente, se puede producir un interbloqueo cuando dos acciones en competencia esperarán una a la otra para avanzar. En los sistemas de telecomunicaciones, puede producirse un punto muerto debido a la pérdida o la corrupción de las señales..
En la actualidad, el interbloqueo es uno de los principales problemas en los sistemas de multiprocesamiento y la computación paralela. Como solución, un sistema de bloqueo llamado sincronización de procesos Se implementa tanto para software como para hardware..
Del diccionario de la ciencia médica, la inanición es el resultado de una carencia grave o total de nutrientes que se necesitan para el mantenimiento de la vida. Del mismo modo, en informática, el hambre es un problema que se encuentra cuando varios subprocesos o procesos esperan el mismo recurso, que se llama un interbloqueo.
Para salir de un punto muerto, uno de los procesos o subprocesos debe tener que darse por vencido o revertirse para que el otro subproceso o proceso pueda usar el recurso. Si esto sucede continuamente y el mismo proceso o subproceso debe ceder o retroceder cada vez mientras permite que otros procesos o subprocesos utilicen el recurso, entonces el proceso o subproceso seleccionado, que se deshace, sufrirá una situación denominada inanición. Por lo tanto, Para salir de un punto muerto, la inanición es una de las soluciones.. Por eso, a veces se llama hambre. una especie de salvavidas. Cuando hay muchos procesos o subprocesos de alta prioridad, un proceso o subproceso de menor prioridad siempre morirá de hambre..
Puede haber muchas hambrunas como hambriento de recursos y hambriento en la CPU. Hay muchos ejemplos comunes de inanición. Son el problema de los lectores-escritores y el problema de los filósofos de la cena, que es más famoso. Hay cinco filósofos silenciosos sentados en una mesa redonda con cuencos de espaguetis. Las horquillas se colocan entre cada pareja de filósofos adyacentes. Cada filósofo debe pensar y comer alternativamente. Sin embargo, un filósofo solo puede comer espaguetis cuando tiene las horquillas izquierda y derecha.
Los "filósofos que comen"
• En un punto muerto, los dos subprocesos o procesos se esperarán el uno al otro y ambos no avanzarán.
• En caso de inanición, cuando dos o más subprocesos o procesos esperan el mismo recurso, uno retrocederá y permitirá que los otros utilicen primero el recurso y, a continuación, el subproceso o proceso hambriento intentarán nuevamente. Por lo tanto, todos los subprocesos o procesos de todos modos avanzarán.
• En un punto muerto, tanto los subprocesos / procesos de alta prioridad, como los subprocesos / procesos de baja prioridad, se esperarán el uno al otro 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.
• Un punto muerto es una espera circular..
• Una inanición es una especie de bloqueo vital y, a veces, ayuda a salir de un punto muerto..
• Un punto muerto causa inanición, pero la inanición no causa un punto muerto..
• Se producirá un interbloqueo debido a la exclusión mutua, retención y espera, sin preferencia o espera circular.
• La inanición ocurre debido a la escasez de recursos, la gestión no controlada de los recursos y las prioridades del proceso..
Resumen:
Los interbloqueos y las carencias de hambre son algunos de los problemas que se producen debido a las carreras de datos y las condiciones de las carreras que se producen durante la programación, así como la implementación de hardware. En un punto muerto, dos subprocesos se esperarán infinitamente el uno al otro sin ejecutarse, mientras que, en una hambruna, un subproceso retrocederá y permitirá que el otro subproceso use los recursos. Un punto muerto causará inanición mientras que la inanición ayudará a que un hilo salga de un punto muerto..
Imágenes cortesía: