Послідовна узгодженість

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Послідовна узгодженість (англ. Sequential consistency) — це модель узгодженості, яка використовується в області паралельних обчислень (наприклад, у розподіленій спільній пам’яті, розподілених транзакціях тощо).

"Результат будь-якого виконання є таким, якби операції всіх процесорів виконувалися в певному послідовному порядку, і операції кожного окремого процесора з’являлися в цій послідовності в порядку, визначеному його програмою." [1]

Тобто порядок виконання програми в одному процесорі (або потоці) такий самий, як і порядок програми, тоді як порядок виконання програми на різних процесорах (або потоках) не визначений.

У такому прикладі:

порядок виконання між A1, B1 і C1 зберігається, тобто A1 виконується перед B1, а B1 перед C1. Те саме для A2 і B2. Але, оскільки порядок виконання між процесорами не визначений, B2 може працювати до або після C1 (B2 може фізично працювати перед C1, але ефект B2 може спостерігатися після C1, що є тим самим, як «B2 запускається після C1»).

Концептуально є єдина глобальна пам’ять і «перемикач», який з’єднує довільний процесор із пам’яттю на будь-якому етапі часу. Кожен процесор виконує операції з пам’яттю в програмному порядку, а комутатор забезпечує глобальну серіалізацію всіх операцій з пам’яттю.

Послідовна узгодженість слабша, ніж сувора узгодженість, яка вимагає читання з місця для повернення значення останнього запису в це місце; сувора послідовність вимагає, щоб операції розглядалися в тому порядку, в якому вони були фактично виконані.

  1. Leslie Lamport, "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs", IEEE Trans. Comput. C-28,9 (Sept. 1979), 690-691.