- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
Глава 8
Примеры процессов с передачей сообщений
8.1Разделение множеств
8.1.1Задача разделения множеств
Пусть задана пара U, V конечных непересекающихся множеств, причём каждому элементу x U V сопоставлено некоторое число w(x), называемое весом этого элемента.
Требуется преобразовать эту пару в такую пару множеств U0, V 0, чтобы
• |U| = |U0|, |V | = |V 0|
(для каждого конечного множества M знакосочетание |M| обозначает количество элементов в M)
• для каждого u U0 и каждого v V 0 выполнялось неравенство
w(u) ≤ w(v)
8.1.2Распределённый алгоритм решения задачи разделения множеств
Задачу разделения множеств можно решить путём выполнения нескольких сеансов обмена элементами между этими множествами. Каждый сеанс состоит из следующих действий:
235
•нахождение элемента mx с максимальным весом в левом множестве
•нахождение элемента mn с минимальным весом в правом множестве
•перенесение
–mx из левого множества в правое, и
–mn из правого множества в левое.
Для реализации этой идеи предлагается использовать распределённый алгоритм, определяемый как процесс вида
(Small | Large) \ {α, β} |
(8.1) |
где
•процесс Small выполняет операции, связанные с левым множеством, и
•процесс Large выполняет операции, связанные с правым множеством.
Потоковый граф, соответствующий этому алгоритму, имеет
вид ' $' $ u α - e
Small e β u Large
& %& %
Ниже мы будем использовать следующие обозначения:
•для каждого подмножества W U V знакосочетания max(W ) и min(W ) обозначают элемент множества W с максимальным и минимальным весом соответственно,
•для
236
–любых подмножеств W1, W2 U V , и
–любого u U V
выражения
W1 ≤ u, u ≤ W1, W1 ≤ W2
являются сокращённой записью выражений
x W1 |
w(x) ≤ w(u) |
x W1 |
w(u) ≤ w(x) |
x W1, y W2 w(x) ≤ w(y)
соответственно
Аналогичный смысл имеют выражения
max(W ), min(W ), W ≤ u, u ≤ W, W1 ≤ W2
в которых символы W , Wi и u обозначают переменные, значениями которых являются
•помножества множества U V , и
•элементы множества U V
соответственно.
8.1.3Процессы Small и Large
Процессы Small и Large могут быть определены в виде блок-схем, которые затем можно преобразовать в процессы с СО и редуцировать. Мы не будем давать описания этих блок-схем и излагать их преобразование в процессы с СО и этапы их редукции, приведём лишь соответствующие редуцированные процессы с СО.
Процесс Small имеет следующий вид:
Init = (S = U)
237
A |
|
|
|
C |
||
|
|
|
||||
@ |
|
6 |
||||
|
|
|
|
|
||
I@ |
|
|
|
|
||
mx := max(S) |
@ (x < mx) ? |
|
||||
@ |
|
|
|
(x ≥ mx) ? |
||
α! mx |
|
@ |
|
|
||
S := S \ {mx} |
|
@ |
|
|
U0 := S |
|
|
@ |
|
(8.2) |
|||
|
|
- B |
||||
? |
|
|
@ |
|
|
|
|
|
@ |
|
|||
|
|
|
|
|||
S := S x |
|
β? x
{ } mx := max(S)
Процесс Large имеет следующий вид:
|
|
|
|
|
|
|
|||||
Init = (L = V ) a |
|
|
|
|
|
c |
|||||
|
|
@ |
|
|
|
6 |
|||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
I@ |
|
|
|
|
|
|
||
|
α? y |
@ (y > mn) ? |
|
||||||||
L := L |
@ |
@ |
|
|
|
(y ≤ mn) ? |
|||||
y |
} |
|
|
|
|
|
|
||||
|
{ |
|
|
|
|
@ |
|
|
|
V 0 := L |
|
mn := min(L) |
|
|
@ |
|
|
|
(8.3) |
||||
|
|
|
|
|
|
||||||
|
|
|
|
|
- b |
||||||
|
|
? |
|
|
|
@ |
|
|
|||
|
|
|
|
|
|
@ |
|
||||
|
|
|
|
|
|
||||||
|
|
L := L mn |
|
||||||||
|
|
|
|
|
β! mn |
\ { |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
mn := min(L)
8.1.4Анализ алгоритма разделения множеств
Процесс, описываемый выражением (8.1), получается путём
•выполнения над процессами (8.2) и (8.3) операций параллельной композиции и ограничения, в соответствии с определением (8.1), и
•выполнения редукции получившегося процесса. Редуцированный процесс выглядит следующим образом:
238
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Ac |
|
|
|
|
|
|
|
|
x < mx |
6 |
|
|
|
|
|
|||
|
|
( y ≤ mn ) ? |
|
|
|
|
|
||||
|
|
V 0 := L |
|
|
|
( y |
≥ mn ) |
? |
|||
|
|
|
|
|
|
|
x mx |
|
|
||
|
( y > mn ) |
? |
|
|
V 00 |
|
≤ |
|
|
|
|
|
|
|
:= L |
|
|
|
|||||
|
|
x < mx |
|
|
|
U := S |
|
|
|
||
|
|
|
Bb |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
- |
|
|
Aa |
|
|
|
- |
|
|
|
|
Cc |
||
|
mx := max(S) |
|
|
|
(8.4) |
||||||
|
|
|
|||||||||
y := mx |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
S := S \ {mx}
|
L := L {y} |
|
|
|
|
|
|
|
x ≥ mx |
mn := min(L) |
|
( |
||
|
|
|
) |
|
L := L \ {mn} |
|
y > mn ? |
|||
x := mn |
mn |
|
U0 := S |
|||
|
S := S |
{ |
} |
|
? |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
Ca |
|
|
|
|
|
|
|
mx := max(S) |
|
|
||||
mn := min(L) |
|
|
На данной диаграмме видно, что у процесса (8.4) имеются такие состояния (Ac и Ca),
•из которых не выходит ни одного перехода (такие состояния называются терминальными), т.е., попав в которые, процесс не может продолжать свою работу,
•но попадание в эти состояния не является нормальным завершением работы процесса.
Попадание процесса в такие состояния называется тупиком, или
дедлоком.
Процесс (8.1) действительно может попасть в одно из таких состояний, например, при
U = {3} и V = {1, 2}
239
(где вес каждого числа совпадает с его значением).
Тем не менее, процесс (8.1) обладает следующими свойства-
ми:
•данный процесс всегда завершает свою работу (т.е. попадает в одно из терминальных состояний - Ac, Cc или Ca)
•после завершения работы процесса выполняются соотношения
S = U , |
L = V |
|
|
(8.5) |
||
S |
|
L = U |
V |
| |
|
|
| | |
| | |
| | | |
|
|||
S |
≤ |
L |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для обоснования этих свойств мы будем использовать функцию
def
f(S, L) = | {(s, l) S × L | w(s) > w(l)} |
Кроме того, при анализе последовательности операторов присваивания, выполняемых при переходе от состояния Aa к состоянию Bb, удобно представлять эту последовательность схематически как последовательность следующих действий:
|
|
y:=max(S) |
||
1. |
S |
- |
|
L |
|
||||
|
(перенесение элемента y := max(S) из S в L) |
|||
|
|
x:=min(L) |
||
2. |
L |
- |
S |
|
|
3.mx := max(S)
4.mn := min(L)
Нетрудно установить, что имеют место следующие утверждения.
1.Если в текущий момент времени i
•процесс находится в состоянии Aa, и
•значения Si, Li переменных S и L в этот момент удовлетворяют равенству
f(Si, Li) = 0
т.е. имеет место соотношение
Si ≤ Li
240
то Si+1 = Si и Li+1 = Li. Кроме того, после выполнения перехода от состояния Aa к состоянию Bb значения переменных x, y, mx и mn будут удовлетворять соотношениям
y = x = mx ≤ mn
и, таким образом, следующим переходом будет переход от состояния Bb к состоянию Cc, т.е. процесс нормально завершит свою работу.
При этом
•значения переменных U0 и V 0 будут равны Si и Li соответственно,
•и, следовательно, значения переменных U0 и V 0 будут удовлетворять требуемым соотношениям.
2.Если в текущий момент времени i
•процесс находится в состоянии Aa, и
•значения Si, Li переменных S и L в этот момент удовлетворяют неравенству
f(Si, Li) > 0
то после выполнения перехода от состояния Aa к состоянию Bb (т.е. в момент i + 1) новые значения Si+1, Li+1 переменных S и L будут удовлетворять неравенству
f(Si+1, Li+1) < f(Si, Li) |
(8.6) |
Кроме того, значения переменных x, y, mx, mn в момент i+ 1 будут удовлетворять соотношениям
y = max(Si), x = min(Li)
mx = max(Si+1), |
mn = min(Li+1) |
x < y, x ≤ mx, |
mn ≤ y |
Отсюда следует, что если в момент i+1 процесс будет переходить из состояния Bb в одно из терминальных состояний (Ac, Cc или Ca), то это возможно
241
(a) либо если x = mx |
|
(b) либо если y = mn |
|
В случае (a) имеют место соотношения |
|
Si+1 ≤ mx = x ≤ Li |
|
откуда, используя |
|
x < y и Li+1 Li {y} |
|
получаем: |
(8.7) |
Si+1 ≤ Li+1 |
В случае (b) имеют место соотношения
Si ≤ y = mn ≤ Li+1
откуда, используя
x < y и Si+1 Si {x}
получаем соотношение (8.7).
Таким образом, во всех возможных случаях попадания в какое-либо терминальное состояние имеет место соотношение
S ≤ L
Истинность других соотношений, перечисленных в (8.5), усматривается непосредственно.
Из первого и второго утверждения следует, что данный процесс не может зациклиться, так как зацикливание возможно только в том случае, когда
•процесс бесконечно часто попадает в состояние Aa, и
•при каждом попадании в состояние Aa значение функции f на текущих значениях переменных S, T положительно.
Невозможность данной ситуации следует из
242