
- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы

Спецификация данного протокола тоже имеет такой же вид, т.е. представляет собой процесс (8.25).
При построении процесса с СО, соответствующего данному протоколу, и его последующей редукции, получается следующая
диаграмма: |
(s = r) ? |
|
|
||||||
|
|
(s = r) ? |
|
||||||
|
6 |
|
|
Out ! x |
|
||||
|
|
||||||||
|
|
|
|||||||
i In ? x |
- j |
|
inv(r) |
|
|||||
|
|
|
|
? |
|
|
|||
|
6 |
|
|
(8.30) |
|||||
6 (s = r) ? |
|
|
|
|
|
||||
inv(s) |
|
|
|
(s = r) ? |
|
||||
|
|
|
|
|
|
Out ! x |
|
||
|
|
|
|
|
|
inv(s) |
|
||
|
|
|
|
|
|||||
|
|
inv(r) |
|
Доказать наблюдаемую эквивалентность процессов (8.25) и (8.30) можно, например, при помощи теоремы 34, определив функцию µ вида
µ : {1, 2} × {i, j} → F m
следующим образом:
|
def |
|
µ(1, i) = (s = r) |
||
def |
|
|
|
µ(2, i) = |
|
|
def |
|
|
|
|
|
|
|
|
µ(1, j) = (s = r) |
|
|
def |
6 |
|
µ(2, j) = (s = r) |
8.4.6 Двунаправленная передача
Рассмотренные выше протоколы относятся к классу симплексных протоколов: они реализуют однонаправленную передачу информационных кадров (т.е. кадров, содержащих пакеты) от одного агента к другому.
В большинстве ситуаций пересылки данных между двумя агентами требуется двунаправленная передача, т.е. передача информационных кадров в обоих направлениях. В данном случае каждый из агентов выступает как в роли отправителя, так и
273
в роли получателя. Протоколы, реализующие двунаправленную передачу, называются дуплексными протоколами.
В дуплексных протоколах посылка подтверждений может быть совмещена с посылкой информационных кадров: если агент B успешно принял информационный кадр f от агента A, он может послать своё подтверждение получения кадра f не отдельным кадром, а в составе своего информационного кадра.
Ниже мы излагаем примеры некоторых дуплексных протоколов.
8.4.7Дуплексный протокол с чередующимися битами
Простейшим дуплексным протоколом является излагаемый в этом параграфе дуплексный протокол с чередующимися битами. Данный протокол является обобщением протокола ABP.
В этом протоколе тоже участвуют два агента, но, в отличие от протокола ABP, поведение каждого из агентов описывается одним и тем же процессом, который совмещает в себе процессы отправителя и получателя из протокола ABP.
Каждый кадр f, пересылаемый каким-либо из этих агентов, содержит пакет x и два бита: s и r, где
•s имеет тот же смысл, что и в протоколе ABP: это бит, сопоставленный пакету x,
•r является битом подтверждения последнего полученного неискажённого кадра.
Для формирования кадров используется функция ϕ. Для извлечения пакетов и битов из кадров используются функции info, seq и ack, обладающие следующими свойствами:
info(ϕ(x, s, r)) |
= |
x |
seq(ϕ(x, s, r)) |
= |
s |
ack (ϕ(x, s, r)) |
= |
r |
Также агенты используют функцию inv для инвертирования значений битовых переменных.
274

С каждым из агентов связан свой таймер, поведение которого описывается процессом T imer, представленным диаграммой (8.21).
Потоковый граф этого протокола имеет следующий вид:
|
'e u |
$ |
|
|
|
|
|
|
'e u |
$ |
||||||||||||
|
In1 Out1 |
|
|
|
|
|
|
|
|
|
In2 Out2 |
|||||||||||
|
|
|
|
|
|
|
C1 |
' |
$C2 |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
Agent1 |
|
u |
|
- |
|
e |
Channel |
|
u |
- |
|
eAgent2 |
|
|
|||||||
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
e C1 |
|
|
u |
|
|
|
e C2 |
|
|
u |
|
(8.31) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
&u |
|
e6 |
|
%& |
% |
|
&u |
|
e6 |
|
% |
||||||||||
|
|
|
|
|
|
|||||||||||||||||
|
|
|||||||||||||||||||||
start1 |
|
timeout1 |
|
|
|
|
|
|
|
start2 |
|
timeout2 |
||||||||||
|
e |
|
u |
|
|
|
|
|
|
|
|
e |
|
u |
|
|||||||
? |
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
T imer1 |
|
|
|
|
|
|
|
|
|
|
|
|
T imer2 |
|
|
Процесс, описывающий поведение каждого из агентов, пред-
ставляется в виде следующей блок-схемы:
' $
start |
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
inv(s) |
|
|
|
|
|
|
|
|||||||||||
& |
|
% |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
||||||||||
s, r = 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
? |
|
|
|
− |
6 |
|
|
|
|||||||||||||
|
|
|
|
|
In ? x |
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
- |
|
|
|
|
|
|
|
ack(f) = |
s |
|
|
|
inv(r) |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
? |
− |
|
|
|
6 |
|
6− |
+ |
6 |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|||||||||
|
|
C ! ϕ(x, s, 1 |
|
r) |
|
|
|
seq(f) = r |
- |
Out ! info(f) |
||||||||||||||||
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
− |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
||||||||
|
|
|
|
|
start ! |
|
|
|
|
|
+ |
f = |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
? |
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
timeout ? |
|
|
|
C ? f |
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275

Блок-схема, описывающая поведение конкретного агента, получается из этой блок-схемы приписыванием соответствующего индекса к переменным и именам, входящим в эту блок-схему.
Поведение канала представляется процессом (8.29), к которому применено переименование
[ C1/S, C2/R ]
Таким образом, каждый агент в этом протоколе посылает свой следующий пакет только после получения подтверждения своего предыдущего пакета.
Нормальную работу данного протокола можно изобразить следующей диаграммой:
Agent1 ϕ(x0,0,1)- Agent2 x0 - СУ2 СУ1 y0 Agent1 ϕ(y0,0,0) Agent2
Agent1 ϕ(x1,1,0)- Agent2 x1 - СУ2 СУ1 y1 Agent1 ϕ(y1,1,1) Agent2
Agent1 ϕ(x2,0,1)- Agent2 x2 - СУ2 СУ1 y2 Agent1 ϕ(y2,0,0) Agent2
. . .
Однако, если оба агента одновременно вышлют друг другу начальные кадры, то работа протокола будет не вполне нормальной (хотя, тем не менее, передача пакетов в данном случае является корректной), и может быть изображена следующей диа-
276