Saltar al contenido

¿Cuál es la diferencia entre los algoritmos de prevención de interbloqueo “esperar-morir” y “herida-esperar”?

Este post ha sido aprobado por nuestros especialistas para garantizar la veracidad de este post.

Solución:

Esquema Wait-Die

Es un no preventivo técnica para la prevención de interbloqueos. Cuando la transacción Tnorte solicita un elemento de datos actualmente en poder de Tk, Tnorte se le permite esperar solo si tiene una marca de tiempo menor que la de Tk
(Eso esnorte es más viejo que Tk), de lo contrario Tnorte es asesinado (“morir”).

En este esquema, si una transacción solicita bloquear un recurso (elemento de datos), que ya está retenido con un bloqueo conflictivo por otra transacción, entonces puede ocurrir una de las dos posibilidades:

  1. Marca de tiempo (Tnorte) k) – eso es Tnorte, que solicita un bloqueo en conflicto, es más viejo que Tk – luego Tnorte se le permite “esperar” hasta que el elemento de datos esté disponible.

  2. Marca de tiempo (Tnorte)> Marca de tiempo (Tk) – eso es Tnorte es más joven que Tk – luego Tnorte es asesinado (“muere”).
    Tnorte se reinicia más tarde con un retraso aleatorio pero con la misma marca de tiempo (n).

Este esquema permite que la transacción más antigua “espere” pero mata a la más joven (“muere”).

Ejemplo

Suponga que la transacción T5, T10, T15 tienen marcas de tiempo 5, 10 y 15 respectivamente.

Si t5 solicita un elemento de datos en poder de T10 luego T5 esperará”.

Si t15 solicita un elemento de datos en poder de T10, luego T15 será asesinado (“morir”).

Esquema de herida-espera

Es un con derecho preferente técnica para la prevención de interbloqueos. Es una contraparte del esquema de esperar a morir. Cuando la transacción Tnorte solicita un elemento de datos actualmente en poder de Tk, Tnorte se le permite esperar solo si tiene una marca de tiempo mayor que la de Tk, de lo contrario Tk es asesinado (es decir, Tk es herido por Tnorte).

En este esquema, si una transacción solicita bloquear un recurso (elemento de datos), que ya está retenido con un bloqueo conflictivo por otra transacción, puede ocurrir una de las dos posibilidades:

  1. Marca de tiempo (Tnorte) k), luego Tnorte fuerzas Tk ser asesinado – eso es Tnorte “heridas” Tk.
    Tk se reinicia más tarde con un retraso aleatorio pero con la misma marca de tiempo (k).

  2. Marca de tiempo (Tnorte)> Marca de tiempo (Tk), luego Tnorte se ve obligado a “esperar” hasta que el recurso esté disponible.

Este esquema permite que la transacción más joven que solicita un bloqueo “espere” si la transacción anterior ya tiene un bloqueo, pero obliga a la más joven a suspenderse (“enrollar”) si la transacción anterior solicita un bloqueo en un artículo que ya tiene el más joven. una.

Ejemplo

Nuevamente, suponga que las Transacciones T5, T10, T15 tienen marcas de tiempo 5, 10 y 15 respectivamente.

Si t5 solicita un elemento de datos en poder de T10, entonces el elemento de datos se sustituirá por T10 y T10 sera suspendido. (“herido”)

Si t15 solicita un elemento de datos en poder de T10, luego T15 esperará”.

Resumen

En ambos casos, solo la transacción que ingresa al sistema en un más tarde La marca de tiempo (es decir, la transacción más reciente) podría eliminarse y reiniciarse.

Parth ha dado una respuesta detallada. Aquí lo resumo de otra manera.

Suponga que Tnorte solicita un candado retenido por Tk. La siguiente tabla resume las acciones tomadas para el esquema de espera-dado y herida-espera:

                           wait-die         wound-wait
Tn is younger than Tk      Tn dies          Tk waits
Tn is older than Tk        Tn waits         Tk aborts
      

Ambos esquemas prefieren transacciones más antiguas con una marca de tiempo más antigua.

esperar-morir: Cuando un más viejo transacción intenta bloquear un elemento DB que ha sido bloqueado por un más joven transacción, es murga. Cuando un más joven transacción intenta bloquear un elemento DB que ha sido bloqueado por un más viejo transacción, es muere.

herida-espera: Cuando un más viejo transacción intenta bloquear un elemento DB que ha sido bloqueado por un más joven transacción, es heridas la transacción más joven. Cuando un más joven transacción intenta bloquear un elemento DB que ha sido bloqueado por un más viejo transacción, es murga.


Referencias:

  • Prevención de interbloqueo con marcas de tiempo: el método de espera-morir
  • Prevención de puntos muertos con marcas de tiempo: esquema de espera de heridas
  • Comparando los esquemas esperar-morir y herir-esperar

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *