Consistencia secuencial es uno de los modelos de consistencia se utilizan en el dominio de computación concurrente (por ejemplo, en la memoria compartida distribuida , las transacciones distribuidas , etc.).
Primero se definió como la propiedad que requiere que
- "... el resultado de cualquier ejecución es el mismo que si las operaciones de todos los procesadores se ejecutaran en algún orden secuencial, y las operaciones de cada procesador individual aparecen en esta secuencia en el orden especificado por su programa". [1]
Para comprender esta afirmación, es esencial comprender una propiedad clave de la coherencia secuencial: el orden de ejecución del programa en el mismo procesador (o subproceso) es el mismo que el orden del programa, mientras que el orden de ejecución del programa entre procesadores (o subprocesos) no está definido. . En un ejemplo como este:
procesador 1: <- Ejecutar A1 -> <- Ejecutar B1 -> <- Ejecutar C1 -> procesador 2: <- A2 ejecutar -> <- B2 ejecutar -> Hora ------------------------------------------------- -------------------->
Se conserva el orden de ejecución entre A1, B1 y C1, es decir, A1 se ejecuta antes que B1 y B1 antes que C1. Lo mismo para A2 y B2. Pero, como el orden de ejecución entre procesadores no está definido, B2 podría ejecutarse antes o después de C1 (B2 podría ejecutarse físicamente antes de C1, pero el efecto de B2 podría verse después del de C1, que es el mismo que "B2 ejecuta después de C1").
Conceptualmente, hay una memoria global única y un "conmutador" que conecta un procesador arbitrario a la memoria en cualquier paso de tiempo. Cada procesador emite operaciones de memoria en orden de programa y el conmutador proporciona la serialización global entre todas las operaciones de memoria [2]
La consistencia secuencial es más débil que la consistencia estricta , que requiere una lectura desde una ubicación para devolver el valor de la última escritura a esa ubicación; La coherencia estricta exige que las operaciones se vean en el orden en el que realmente se emitieron.
Ver también
Referencias
- ^ Leslie Lamport , "Cómo hacer una computadora multiprocesador que ejecute correctamente programas multiproceso", IEEE Trans. Computación. C-28,9 (septiembre de 1979), 690-691.
- ^ Sarita V. Adve , Kourosh Gharachorloo , "Modelos de coherencia de memoria compartida: un tutorial"