Базовые определения и формализм — различия между версиями
Anverk (обсуждение | вклад) (Ещё определения) |
(больше определений) |
||
Строка 1: | Строка 1: | ||
− | == Определения == | + | ==Определения== |
+ | === Базовые определения === | ||
{{Определение | {{Определение | ||
|id = system_execution | |id = system_execution | ||
Строка 29: | Строка 30: | ||
}} | }} | ||
− | + | === Конфликты и гонки данных === | |
− | + | {{Определение | |
|id = conflict | |id = conflict | ||
− | |definition = Две операции над одной переменной, одна из которых это запись, называются '''конфликтующими'''. Соответственно, бывают '''read-write''' и ''write-write''' конфликты. | + | |definition = Две операции над одной переменной, одна из которых это запись, называются '''конфликтующими'''. Соответственно, бывают '''read-write''' и '''write-write''' конфликты. |
}} | }} | ||
− | + | {{Определение | |
|id = data_race | |id = data_race | ||
− | |definition = Если две конфликтующие операции произошли параллельно, то такая ситуация называется '''гонка данных (data race | + | |definition = Если две конфликтующие операции произошли параллельно, то такая ситуация называется '''гонка данных''' (англ. ''data race'') <br /> '''Замечание''': наличие гонки данных является свойством конкретного '''исполнения'''. |
}} | }} | ||
− | + | {{Определение | |
− | |id = | + | |id = correctly_syncronized |
|definition = Программа называется '''корректно синхронизированной''', если в '''любом допустимом''' исполнении нет гонок данных. | |definition = Программа называется '''корректно синхронизированной''', если в '''любом допустимом''' исполнении нет гонок данных. | ||
}} | }} | ||
+ | |||
+ | === Правильное исполнение === | ||
+ | {{Определение | ||
+ | |id = restriction_on_thread | ||
+ | |definition = '''Сужение''' исполнения <tex> H </tex> на поток <tex> P - </tex> исполнение, в котором остались только операции, происходящие в потоке <tex> P </tex>. <br /> Обозначение: <tex> \left.H\right|_P </tex>. Формально <tex> \left.H\right|_P = \{e \in H|\ proc(e) = P\}</tex> | ||
+ | }} | ||
+ | {{Определение | ||
+ | |id = well_formed_control_flow | ||
+ | |definition = Исполнение называется '''правильным''' (англ. ''well-formed''), если его сужение на каждый поток <tex> P </tex> является последовательным. | ||
+ | }} | ||
+ | {{Определение | ||
+ | |id = program_order | ||
+ | |definition = Объединение всех сужений на потоки называется '''программным порядком''' (англ. ''program order'' или ''po''). | ||
+ | }} | ||
+ | {{Определение | ||
+ | |id = restriction_on_object | ||
+ | |definition = '''Сужение''' исполнения <tex> H </tex> на объект <tex> x - </tex> исполнение, в котором остались только операции, взаимодействующие с объектом <tex> x </tex>. <br /> Обозначение: <tex> \left.H\right|_x </tex>. Формально <tex> \left.H\right|_x = \{e \in H|\ obj(e) = x\}</tex> <br /> '''Замечание''': в правильном исполнении сужение на объекты не всегда является последовательным | ||
+ | }} | ||
+ | |||
+ | === Условия согласованности === | ||
+ | {{Определение | ||
+ | |id = legacy_control_flow | ||
+ | |definition = Последовательное исполнение является '''допустимым''' (англ. ''legal''), если выполнены последовательные спецификации всех объектов. | ||
+ | }} | ||
+ | {{Определение | ||
+ | |id = legacy_control_flow | ||
+ | |definition = Исполнение последовательно согласовано, если можно сопоставить '''эквивалентное''' ему (состоящее из тех же событий и операций) допустимое последовательное исполнение, которое сохраняет программный порядок, то есть порядок операций на каждом потоке. <br / > Последовательная согласованность на каждом объекте не влечёт последовательную согласованность исполнения | ||
+ | }} | ||
+ | {{Определение | ||
+ | |id = linearizabilty | ||
+ | |definition = Исполнение '''линеаризуемо''', если существует эквивалентное ему допустимое последовательное исполнение, которое сохраняет порядок отношения <tex> \rightarrow </tex>. | ||
+ | }} | ||
+ | |||
+ | == Свойства линеаризуемости == |
Версия 20:52, 30 сентября 2018
Содержание
Определения
Базовые определения
Определение: |
Исполнение системы
| это пара , где:
Определение: |
Пусть Обозначение: | Тогда говорят, что параллельна , если
Определение: |
Система Говорим, что система имеет свойство , если каждое исполнение системы имеет свойство | это множество всех возможных исполнений.
Определение: |
Модель глобального времени определим так, что это модель, в которой в качестве операции используется временной интервал: Замечание: глобального времени не существует из-за физических ограничений, поэтому в доказательствах такая модель не используется, но помогает при визуализации различных исполнений | причём . Зададим в этой модели отношение следующим образом: . Неформально это означает, что вход в функцию, выполняющую операцию , был осуществлён строго позже, чем был получен результат работы функции, выполняющей операцию .
Определение: |
Исполнение системы | называется последовательным, если . То есть, если все операции линейно-упорядочены отношением "произошло до".
Конфликты и гонки данных
Определение: |
Две операции над одной переменной, одна из которых это запись, называются конфликтующими. Соответственно, бывают read-write и write-write конфликты. |
Определение: |
Если две конфликтующие операции произошли параллельно, то такая ситуация называется гонка данных (англ. data race) Замечание: наличие гонки данных является свойством конкретного исполнения. |
Определение: |
Программа называется корректно синхронизированной, если в любом допустимом исполнении нет гонок данных. |
Правильное исполнение
Определение: |
Сужение исполнения Обозначение: . Формально | на поток исполнение, в котором остались только операции, происходящие в потоке .
Определение: |
Исполнение называется правильным (англ. well-formed), если его сужение на каждый поток | является последовательным.
Определение: |
Объединение всех сужений на потоки называется программным порядком (англ. program order или po). |
Определение: |
Сужение исполнения Обозначение: . Формально Замечание: в правильном исполнении сужение на объекты не всегда является последовательным | на объект исполнение, в котором остались только операции, взаимодействующие с объектом .
Условия согласованности
Определение: |
Последовательное исполнение является допустимым (англ. legal), если выполнены последовательные спецификации всех объектов. |
Определение: |
Исполнение последовательно согласовано, если можно сопоставить эквивалентное ему (состоящее из тех же событий и операций) допустимое последовательное исполнение, которое сохраняет программный порядок, то есть порядок операций на каждом потоке. Последовательная согласованность на каждом объекте не влечёт последовательную согласованность исполнения |
Определение: |
Исполнение линеаризуемо, если существует эквивалентное ему допустимое последовательное исполнение, которое сохраняет порядок отношения | .