Базовые определения и формализм — различия между версиями
(больше определений) |
(Условия согласованности) |
||
| Строка 73: | Строка 73: | ||
{{Определение | {{Определение | ||
|id = linearizabilty | |id = linearizabilty | ||
| − | |definition = Исполнение '''линеаризуемо''', если существует эквивалентное ему допустимое последовательное исполнение, | + | |definition = Исполнение <tex> (H, \rightarrow_H) </tex> '''линеаризуемо''', если существует эквивалентное ему допустимое последовательное исполнение <tex> (L(H), \rightarrow_{L(H)}) </tex>, называемое '''линеаризацией''', и верно что <tex> \forall e, f \in H: e \rightarrow_H f \Rightarrow e \rightarrow_{L(H)} f </tex>, то есть сохраняется отношение "произошло до". |
}} | }} | ||
== Свойства линеаризуемости == | == Свойства линеаризуемости == | ||
Версия 22:02, 30 сентября 2018
Содержание
Определения
Базовые определения
| Определение: |
Исполнение системы это пара , где:
|
| Определение: |
| Пусть Тогда говорят, что параллельна , если Обозначение: |
| Определение: |
| Система это множество всех возможных исполнений. Говорим, что система имеет свойство , если каждое исполнение системы имеет свойство |
| Определение: |
| Модель глобального времени определим так, что это модель, в которой в качестве операции используется временной интервал: причём . Зададим в этой модели отношение следующим образом: . Неформально это означает, что вход в функцию, выполняющую операцию , был осуществлён строго позже, чем был получен результат работы функции, выполняющей операцию . Замечание: глобального времени не существует из-за физических ограничений, поэтому в доказательствах такая модель не используется, но помогает при визуализации различных исполнений |
| Определение: |
| Исполнение системы называется последовательным, если . То есть, если все операции линейно-упорядочены отношением "произошло до". |
Конфликты и гонки данных
| Определение: |
| Две операции над одной переменной, одна из которых это запись, называются конфликтующими. Соответственно, бывают read-write и write-write конфликты. |
| Определение: |
| Если две конфликтующие операции произошли параллельно, то такая ситуация называется гонка данных (англ. data race) Замечание: наличие гонки данных является свойством конкретного исполнения. |
| Определение: |
| Программа называется корректно синхронизированной, если в любом допустимом исполнении нет гонок данных. |
Правильное исполнение
| Определение: |
| Сужение исполнения на поток исполнение, в котором остались только операции, происходящие в потоке . Обозначение: . Формально |
| Определение: |
| Исполнение называется правильным (англ. well-formed), если его сужение на каждый поток является последовательным. |
| Определение: |
| Объединение всех сужений на потоки называется программным порядком (англ. program order или po). |
| Определение: |
| Сужение исполнения на объект исполнение, в котором остались только операции, взаимодействующие с объектом . Обозначение: . Формально Замечание: в правильном исполнении сужение на объекты не всегда является последовательным |
Условия согласованности
| Определение: |
| Последовательное исполнение является допустимым (англ. legal), если выполнены последовательные спецификации всех объектов. |
| Определение: |
| Исполнение последовательно согласовано, если можно сопоставить эквивалентное ему (состоящее из тех же событий и операций) допустимое последовательное исполнение, которое сохраняет программный порядок, то есть порядок операций на каждом потоке. Последовательная согласованность на каждом объекте не влечёт последовательную согласованность исполнения |
| Определение: |
| Исполнение линеаризуемо, если существует эквивалентное ему допустимое последовательное исполнение , называемое линеаризацией, и верно что , то есть сохраняется отношение "произошло до". |