Vous êtes sur la page 1sur 6

Ejemplos sobre el funcionamiento del algoritmo ARIES

EJEMPLO S REALIZADOS A PARTIR DE EJEMPLOS OBTENIDOS, TRADUCIDOS Y ADAPTADOS DE WWW-INST.EECS.BERKELEY.EDU

Ejemplo 1:
Después de un fallo, nos encontramos con el siguiente registro histórico:

NSR Anotación del Registro Histórico


0 Inicio del Punto de Revisión
5 Finalización del Punto de Revisión (lista de transacciones activas vacía y tabla de páginas sucias vacía)
10 <T1, P1, YYY, ZZZ>
15 <T1, P2, WWW, XXX>
20 <T1, comprometida>

Fase de Análisis:
- Busca el último registro de punto de revisión completado del registro histórico.
- Lee TablaPáginasSucias que hay en ese registro (en este caso, está vacía).
- Se establece RehacerNSR al mínimo RegistroNSR de las páginas de TablaPáginasSucias (que está vacía).
* Si no hay páginas sucias, establece RehacerNSR al NSR del registro punto de revisión del registro
histórico (NSR = 5).
* El paso rehacer comienza explorando el registro histórico desde RehacerNSR (es decir, comienza en
NSR=10).
- El paso de análisis ajusta inicialmente la lista de transacciones que se deben deshacer (lista-deshacer) a la
lista de transacciones en el registro punto de revisión del registro histórico (en este caso, ninguna).
- También lee, a partir del registro punto de revisión del registro histórico, los NSR del último registro del
registro histórico para cada transacción de la lista-deshacer (en este caso, ninguna).
- El paso de análisis continúa examinando hacia adelante desde el punto de revisión. Cada vez que encuentra
un registro de una transacción que no esté en la lista-deshacer, añade la transacción a la lista-deshacer. Cada
vez que encuentra un registro de fin de transacción, borra la transacción de la lista-deshacer.
* NSR = 5: Inicializa la tabla de transacciones activas y la tabla de páginas sucias a vacía.
* NSR = 10: Añade la transacción a la lista de transacciones activas (T1, NSR=10). Añade T1 a lista-
deshacer. Añade (P1, NSR=10) a TablaPáginasSucias.
* NSR = 15: En la lista de transacciones activas, modifica el valor ÚltimoNSR de T1 a 15. Añade (P2,
NSR=15) a la TablaPáginasSucias.
* NSR = 20: Modifica el estado de T1 en la lista de transacciones activas a “Comprometida”. Elimina
T1 de lista-deshacer.

Fase de Rehacer:
- El paso rehacer repite la historia volviendo a ejecutar todas las acciones que no se hayan realizado en una
página en disco. El paso rehacer examina el registro histórico hacia adelante a partir de RehacerNSR
(comienza a partir de NSR=10).
- Cada vez que encuentra un registro de actualización, realiza lo siguiente:
* Si la página no está en la TablaPáginasSucias o el NSR del registro de actualización es menor que el
RegistroNSR de la página de TablaPáginasSucias, entonces el paso rehacer omite el registro.
* En caso contrario, el paso rehacer obtiene la página del disco y, si NSRPágina es menor que el
NSRRegistro, se rehace el registro.
- En nuestro ejemplo:
* Se comienza el escaneo del registro a partir del NSR=10.
* NSR = 10: Se lee la página P1, se comprueba el NSRPágina. Si es menor que 10, hay que rehacer NSR
= 10 (es decir, fijar el valor a ZZZ) y fijar el NSRPágina de la página a 10. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 15: Se lee la página P2, se comprueba el NSRPágina. Si es menor que 15, hay que rehacer NSR
= 15 (es decir, fijar el valor a XXX) y fijar el NSRPágina de la página a 15. Si no ocurre esto, no se hace
nada (se omite).

Fase de Deshacer:
- El paso deshacer es relativamente simple. Realiza una exploración hacia atrás del registro histórico,
deshaciendo todas las transacciones de la lista-deshacer.
- El paso deshacer examina solo los registros históricos de transacciones de la lista-deshacer. El último NSR
registrado durante el paso de análisis sirve para encontrar el último registro para cada transacción en la
lista-deshacer.
- Cuando se encuentra un registro de actualización en el registro histórico, se usa para realizar un deshacer.
El paso deshacer genera un RCR que contiene la acción deshacer realizada. Establece el
DeshacerSiguienteNSR del RCR al valor NSRAnterior del registro de actualización.
- Si se encuentra un RCR, el valor de DeshacerSiguienteNSR indica el NSR del siguiente registro a deshacer
para esa transacción; los registros posteriores para dicha transacción ya se han retrocedido.
- Para registros distintos de RCR, el campo NSRAnterior del registro indica el NSR del siguiente registro que
hay que deshacer para esa transacción. El siguiente registro a procesar en cada paso del paso deshacer es el
máximo, de entre todas las transacciones de la lista-deshacer, de los registros NSR.
- En nuestro ejemplo:
* La lista-deshacer se encuentra vacía, luego no hay que deshacer ninguna transacción.
Ejemplo 2:
Después de un fallo, nos encontramos con el siguiente registro histórico:

NSR Anotación del Registro Histórico


0 Inicio del Punto de Revisión
5 Finalización del Punto de Revisión (lista de transacciones activas vacía y tabla de páginas sucias vacía)
10 <T1, P1, YYY, ZZZ>
15 <T1, P2, WWW, XXX>
20 <T2, P3, UUU, VVV>
25 <T1, comprometida>
30 <T2, P1, ZZZ, TTT>

Fase de Análisis:
- Busca el último registro de punto de revisión completado del registro histórico.
- Lee TablaPáginasSucias que hay en ese registro (en este caso, está vacía).
- Se establece RehacerNSR al mínimo RegistroNSR de las páginas de TablaPáginasSucias (que está vacía).
* Si no hay páginas sucias, establece RehacerNSR al NSR del registro punto de revisión del registro
histórico (NSR = 5).
* El paso rehacer comienza explorando el registro histórico desde RehacerNSR (es decir, comienza en
NSR=10).
- El paso de análisis ajusta inicialmente la lista de transacciones que se deben deshacer (lista-deshacer) a la
lista de transacciones en el registro punto de revisión del registro histórico (en este caso, ninguna).
- También lee, a partir del registro punto de revisión del registro histórico, los NSR del último registro del
registro histórico para cada transacción de la lista-deshacer (en este caso, ninguna).
- El paso de análisis continúa examinando hacia adelante desde el punto de revisión. Cada vez que encuentra
un registro de una transacción que no esté en la lista-deshacer, añade la transacción a la lista-deshacer. Cada
vez que encuentra un registro de fin de transacción, borra la transacción de la lista-deshacer.
* NSR = 5: Inicializa la tabla de transacciones activas y la tabla de páginas sucias a vacía.
* NSR = 10: Añade la transacción a la lista de transacciones activas (T1, NSR=10). Añade T1 a lista-
deshacer. Añade (P1, NSR=10) a TablaPáginasSucias.
* NSR = 15: En la lista de transacciones activas, modifica el valor ÚltimoNSR de T1 a 15. Añade (P2,
NSR=15) a la TablaPáginasSucias.
* NSR = 20: Añade la transacción a la lista de transacciones activas (T2, NSR=20). Añade T2 a lista-
deshacer. Añade (P3, NSR=20) a TablaPáginasSucias.
* NSR = 25: Modifica el estado de T1 en la lista de transacciones activas a “Comprometida”. Elimina
T1 de lista-deshacer.
* NSR = 30: En la lista de transacciones activas, modifica el valor ÚltimoNSR de T2 a 30.

Fase de Rehacer:
- El paso rehacer repite la historia volviendo a ejecutar todas las acciones que no se hayan realizado en una
página en disco. El paso rehacer examina el registro histórico hacia adelante a partir de RehacerNSR
(comienza a partir de NSR=10).
- Cada vez que encuentra un registro de actualización, realiza lo siguiente:
* Si la página no está en la TablaPáginasSucias o el NSR del registro de actualización es menor que el
RegistroNSR de la página de TablaPáginasSucias, entonces el paso rehacer omite el registro.
* En caso contrario, el paso rehacer obtiene la página del disco y, si NSRPágina es menor que el
NSRRegistro, se rehace el registro.
- En nuestro ejemplo:
* Se comienza el escaneo del registro a partir del NSR=10.
* NSR = 10: Se lee la página P1, se comprueba el NSRPágina. Si es menor que 10, hay que rehacer NSR
= 10 (es decir, fijar el valor a ZZZ) y fijar el NSRPágina de la página a 10. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 15: Se lee la página P2, se comprueba el NSRPágina. Si es menor que 15, hay que rehacer NSR
= 15 (es decir, fijar el valor a XXX) y fijar el NSRPágina de la página a 15. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 20: Se lee la página P3, se comprueba el NSRPágina. Si es menor que 20, hay que rehacer NSR
= 20 (es decir, fijar el valor a VVV) y fijar el NSRPágina de la página a 20. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 30: Se lee la página P1 si fue descargada, y se comprueba el NSRPágina = 10. Como es menor
que 30, hay que rehacer NSR = 30 (es decir, fijar el valor a TTT) y fijar el NSRPágina de la página a 30.

Fase de Deshacer:
- El paso deshacer es relativamente simple. Realiza una exploración hacia atrás del registro histórico,
deshaciendo todas las transacciones de la lista-deshacer.
- El paso deshacer examina solo los registros históricos de transacciones de la lista-deshacer. El último NSR
registrado durante el paso de análisis sirve para encontrar el último registro para cada transacción en la
lista-deshacer.
- Cuando se encuentra un registro de actualización en el registro histórico, se usa para realizar un deshacer.
El paso deshacer genera un RCR que contiene la acción deshacer realizada. Establece el
DeshacerSiguienteNSR del RCR al valor NSRAnterior del registro de actualización.
- Si se encuentra un RCR, el valor de DeshacerSiguienteNSR indica el NSR del siguiente registro a deshacer
para esa transacción; los registros posteriores para dicha transacción ya se han retrocedido.
- Para registros distintos de RCR, el campo NSRAnterior del registro indica el NSR del siguiente registro que
hay que deshacer para esa transacción. El siguiente registro a procesar en cada paso del paso deshacer es el
máximo, de entre todas las transacciones de la lista-deshacer, de los registros NSR.
- En nuestro ejemplo:
* La lista-deshacer contiene únicamente la transacción T2, que se tiene que deshacer.
* Se apunta a NSR = 30 para comenzar el proceso de deshacer.
* Se anota “Abortada” en el registro para la transacción T2.
* NSR = 30: Deshacer NSR=30. Escribir un RCR para P1 indicando que se ha fijado “P1=ZZZ”, con
DeshacerSiguienteNSR = 20. Se escribe ZZZ en P1. Se fija NSR=20 para el siguiente paso de deshacer.
* NSR = 20: Deshacer NSR=20. Escribir un RCR para P3 indicando que se ha fijado “P3=UUU”, con
DeshacerSiguienteNSR = NULL (no hay siguiente). Se escribe UUU en P3.
Ejemplo 3:
Después de un fallo, nos encontramos con el siguiente registro histórico:

NSR Anotación del Registro Histórico


10 <T1, P1, YYY, ZZZ>
15 <T2, P3, UUU, VVV>
20 Inicio del Punto de Revisión
25 Finalización del Punto de Revisión
- Lista de transacciones activas: Lista = { [T1, 10]. [T2, 20] }
- TablaPáginasSucias = { [P1, 10], [P2, 15]}
30 <T1, P2, WWW, XXX>
35 <T1, comprometida>
40 <T2, P1, ZZZ, TTT>
45 <T2, abortada>
50 <T2, RCR P1 (ZZZ), DeshacerSiguienteNSR = 15>

Fase de Análisis:
- Busca el último registro de punto de revisión completado del registro histórico.
- Lee TablaPáginasSucias que hay en ese registro (en este caso, está vacía).
- Se establece RehacerNSR al mínimo RegistroNSR de las páginas de TablaPáginasSucias (aquí no está). Por lo
tanto, RehacerNSR=10.
- El paso de análisis ajusta inicialmente la lista de transacciones que se deben deshacer (lista-deshacer) a la
lista de transacciones en el registro punto de revisión del registro histórico (en este caso, ninguna).
- También lee, a partir del registro punto de revisión del registro histórico, los NSR del último registro del
registro histórico para cada transacción de la lista-deshacer (en este caso, ninguna).
- El paso de análisis continúa examinando hacia adelante desde el punto de revisión. Cada vez que encuentra
un registro de una transacción que no esté en la lista-deshacer, añade la transacción a la lista-deshacer. Cada
vez que encuentra un registro de fin de transacción, borra la transacción de la lista-deshacer.
* NSR = 25: Inicializa la tabla de transacciones activas de modo que T1 aparece con UltimoNSR=10 y T2
aparece con UltimoNSR=15. Se inicializa la TablaPáginasSucias de modo que P1 aparece apuntando a
10 y P3 aparece apuntando a 15. Se añade T1 y T2 a lista-deshacer (por encontrarse activas).
* NSR = 30: Añade la transacción a la lista de transacciones activas (T1, NSR=30). Añade (P2, NSR=30)
a TablaPáginasSucias.
* NSR = 35: Modifica el estado de T1 en la lista de transacciones activas a “Comprometida”. Elimina
T1 de lista-deshacer.
* NSR = 40: En la lista de transacciones activas, modifica el valor ÚltimoNSR de T2 a 40.
* NSR = 45: Modifica el estado de T2 en la lista de transacciones activas a “Abortada”.
* NSR = 50: En la lista de transacciones activas, modifica el valor ÚltimoNSR de T2 a 45.

Fase de Rehacer:
- El paso rehacer repite la historia volviendo a ejecutar todas las acciones que no se hayan realizado en una
página en disco. El paso rehacer examina el registro histórico hacia adelante a partir de RehacerNSR
(comienza a partir de NSR=10).
- Cada vez que encuentra un registro de actualización, realiza lo siguiente:
* Si la página no está en la TablaPáginasSucias o el NSR del registro de actualización es menor que el
RegistroNSR de la página de TablaPáginasSucias, entonces el paso rehacer omite el registro.
* En caso contrario, el paso rehacer obtiene la página del disco y, si NSRPágina es menor que el
NSRRegistro, se rehace el registro.
- En nuestro ejemplo:
* Se comienza el escaneo del registro a partir del NSR=10.
* NSR = 10: Se lee la página P1, se comprueba el NSRPágina. Si es menor que 10, hay que rehacer NSR
= 10 (es decir, fijar el valor a ZZZ) y fijar el NSRPágina de la página a 10. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 15: Se lee la página P3, se comprueba el NSRPágina. Si es menor que 15, hay que rehacer NSR
= 15 (es decir, fijar el valor a VVV) y fijar el NSRPágina de la página a 15. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 30: Se lee la página P2, se comprueba el NSRPágina. Si es menor que 30, hay que rehacer NSR
= 30 (es decir, fijar el valor a XXX) y fijar el NSRPágina de la página a 30. Si no ocurre esto, no se hace
nada (se omite).
* NSR = 40: Se lee la página P1 si fue descargada, y se comprueba el NSRPágina = 10. Como es menor
que 40, hay que rehacer NSR = 40 (es decir, fijar el valor a TTT) y fijar el NSRPágina de la página a 40.
* NSR = 50: Se lee la página P1 si fue descargada, y se comprueba el NSRPágina = 40. Como es menor
que 50, hay que rehacer NSR = 50 (es decir, fijar el valor a ZZZ) y fijar el NSRPágina de la página a 50.

Fase de Deshacer:
- El paso deshacer es relativamente simple. Realiza una exploración hacia atrás del registro histórico,
deshaciendo todas las transacciones de la lista-deshacer.
- El paso deshacer examina solo los registros históricos de transacciones de la lista-deshacer. El último NSR
registrado durante el paso de análisis sirve para encontrar el último registro para cada transacción en la
lista-deshacer.
- Cuando se encuentra un registro de actualización en el registro histórico, se usa para realizar un deshacer.
El paso deshacer genera un RCR que contiene la acción deshacer realizada. Establece el
DeshacerSiguienteNSR del RCR al valor NSRAnterior del registro de actualización.
- Si se encuentra un RCR, el valor de DeshacerSiguienteNSR indica el NSR del siguiente registro a deshacer
para esa transacción; los registros posteriores para dicha transacción ya se han retrocedido.
- Para registros distintos de RCR, el campo NSRAnterior del registro indica el NSR del siguiente registro que
hay que deshacer para esa transacción. El siguiente registro a procesar en cada paso del paso deshacer es el
máximo, de entre todas las transacciones de la lista-deshacer, de los registros NSR.
- En nuestro ejemplo:
* La lista-deshacer contiene únicamente la transacción T2, que se tiene que deshacer.
* Se apunta a NSR = 50 para comenzar el proceso de deshacer.
* NSR = 50: Se fija NSR = 15 para el siguiente paso de deshacer.
* NSR = 15: Deshacer NSR=15. Escribir un RCR para P3 indicando que se ha fijado “P3=UUU”,
DeshacerSiguienteNSR = NULL (no hay siguiente). Se escribe UUU en P3.

Vous aimerez peut-être aussi