Starvation o Livelock es la situación en la que una transacción tiene que esperar un período de tiempo indefinido para adquirir un bloqueo.
Razones para el hambre –
- Si el esquema de espera para artículos bloqueados es injusto. ( cola de prioridad )
- Selección de víctimas (la misma transacción se selecciona como víctima repetidamente)
- Fuga de recursos.
- A través de un ataque de denegación de servicio.
El hambre se puede explicar mejor con la ayuda de un ejemplo:
Supongamos que hay 3 transacciones, a saber, T1, T2 y T3 en una base de datos que intenta adquirir un bloqueo en el elemento de datos ‘I’. Ahora, suponga que el programador otorga el bloqueo a T1 (tal vez debido a alguna prioridad) y las otras dos transacciones están esperando el bloqueo. Tan pronto como finaliza la ejecución de T1, también llega otra transacción T4 y solicita un bloqueo en el elemento de datos I. Ahora, esta vez el programador otorga el bloqueo a T4, y T2, T3 tiene que esperar nuevamente. De esta forma, si nuevas transacciones continúan solicitando el bloqueo, T2 y T3 pueden tener que esperar un período de tiempo indefinido, lo que conduce a la inanición .
Soluciones al hambre –
- Prioridad creciente:
el hambre ocurre cuando una transacción tiene que esperar un tiempo indefinido. En esta situación, podemos aumentar la prioridad de esa transacción en particular. Pero el inconveniente de esta solución es que puede suceder que la otra transacción tenga que esperar más tiempo hasta que llegue y proceda la transacción de mayor prioridad. - Modificación en el algoritmo de selección de víctimas:
si una transacción ha sido víctima de selecciones repetidas, entonces el algoritmo puede modificarse reduciendo su prioridad sobre otras transacciones. - Enfoque First Come First Serve:
se puede adoptar un enfoque de programación justo, es decir, FCFS, en el que la transacción puede adquirir un bloqueo en un artículo en el pedido, en el que se solicitó el bloqueo. - Esquema de espera-muerte y espera herida:
estos son los esquemas que utilizan el mecanismo de orden de marca de tiempo de las transacciones.
Para un estudio detallado, consulte: Esquema de espera de muerte y herida
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA