- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
•Первый кадр, посланный отправителем, доходит до получателя успешно.
•Получатель
–пересылает пакет, извлечённый из этого кадра, своему СУ, и
–посылает отправителю через канал подтверждение.
•Это подтверждение пропадает в канале.
•Отправитель, не дождавшись подтверждения, посылает этот кадр ещё раз, и этот кадр снова доходит успешно.
•Получатель воспринимает этот кадр как новый. Он
–пересылает пакет, извлечённый из этого кадра, своему СУ, и
–посылает отправителю через канал подтверждение, которое опять пропадает канале.
•и т.д.
Эта ситуация может возникнуть потому, что в данном протоколе отсутствует механизм, с помощью которого получатель мог бы отличить новый кадр от переданного повторно.
Вследующем параграфе мы приводим пример протокола,
вкотором этот механизм присутствует. Для такого протокола уже можно формально доказать его соответствие спецификации (8.25).
8.4.5Протокол с чередующимися битами
Протокол с чередующимися битами (называемый в англоязычной литературе словосочетанием Alternating Bit Protocol, или, сокращённо, ABP) предназначен для решения той же задачи, что и предыдущий протокол: доставка кадров от отправителя получателю через ненадёжный канал связи (который может искажать и терять передаваемые кадры).
267
Механизм, с помощью которого получатель может отличить новый кадр от переданного повторно, реализован в данном протоколе следующим образом: среди переменных отправителя и получателя присутствуют булевы переменные s и r соответственно, значения которых имеют следующий смысл:
•значение переменной s равно чётности номера очередного кадра, которого пытается послать отправитель, и
•значение переменной r равно чётности номера очередного кадра, которого ожидает получатель.
Вначальный момент значения s и r равны 0 (первый кадр имеет номер 0).
Как и в предыдущем протоколе, в этом протоколе используется абстрактное значение ‘ ’, обозначающее искажённый кадр.
Работа протокола происходит следующим образом.
1.Отправитель, получив очередной пакет от своего СУ,
•записывает его в переменную x,
•формирует кадр, который представляет собой значение некоторой кодирующей функции ϕ на паре (x, s),
•посылает этот кадр в канал,
•запускает таймер
•после чего он ожидает подтверждение посланного кадра.
Если у отправителя истекает время ожидания, и он не получает подтверждения от получателя, то он повторно посылает уже посланный кадр.
Если же он получает подтверждение, которое представляет собой неискажённый кадр, содержащий бит, то он анализирует значение этого бита: если оно совпадает с текущим значением s, то отправитель
•инвертирует значение переменной s (используя для этого функцию inv(x) = 1 − x), и
268
•начинает новый цикл своей работы.
Впротивном случае он опять посылает уже посланный кадр.
Блок-схема, представляющая такое поведение, выглядит следующим образом:
'$
start s = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
& |
s? |
% |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
inv(s) |
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
A |
|
− |
|
|
|
|
|
|
|||||||
|
|
|
|
|
In ? x |
|
|
|
+ |
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
- |
s? |
|
|
6 |
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
bit(z) = s |
|
|
||||||||||
|
|
|
|
|
|
|
B |
|
6 |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
+ |
z = |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
C ! ϕ(x, s) |
|
|
|
|
|
|
− |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|||||||
|
|
|
|
|
|
|
s? |
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
C |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
sE |
|
|
|
|
|||||
|
|
|
|
|
start ! |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
s? |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
timeout ? |
|
|
- |
|
|
C ? z |
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
Процесс, представляемый этой блок-схемой, обозначается знакосочетанием Sender и имеет следующий вид:
Init = (s = 0)
269
|
|
|
( bit(z) = s |
) |
|
|
|
|
A |
z 6= |
|
|
? |
E |
|||
inv(s) |
|
|
|
|||||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
6 |
|
z = |
|
|
|
|
|
|||
|
|
" |
bit(z) = s # |
? |
|
|
||
In ? x |
|
6 |
|
|
|
|
C ? z |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
B |
|
|
|
|
start ! - D |
|||
C ! ϕ(x, s)- C |
||||||||
? |
|
|
||||||
6 |
|
|||||||
|
|
timeout ? |
|
|
|
Процесс отправителя является параллельной композицией (с ограничением) процесса Sender, и процесса Timer.
2.Канал в каждый момент времени может содержать не более одного кадра. Он может выполнять следующие действия:
•получение кадра от отправителя, и
–пересылка этого кадра получателю, или
–пересылка получателю искажённого кадра, или
–потеря кадра
•получение кадра с подтверждением от получателя, и
–пересылка этого кадра отправителю, или
–пересылка отправителю искажённого кадра, или
–потеря кадра.
Поведение канала представляется следующим процессом:
270
> ? > ?
|
|
|
|
R ! y |
|
(8.29) |
|||||
|
|
|
?? |
|
|
|
|
||||
γ |
|
S ! u |
- |
α |
|
|
- |
β |
|
||
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
||
|
|
R ? u |
|
S ? y |
|
|
|
||||
|
|
66 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||||
|
S ! |
|
R ! |
|
|
3.Получатель при получении очередного кадра из канала
•проверяет, не искажён ли этот кадр,
•и если не искажён, то извлекает из него пакет и связанный с ним бит при помощи функций info и bit, обладающих следующими свойствами:
info(ϕ(x, b)) = x, bit(ϕ(x, b)) = b
Получатель проверяет, совпадает ли значение бита, извлечённого из кадра, с ожидаемым значением, которое содержится в переменной r.
Если проверка дала положительный результат, то получатель
•передаёт пакет, извлечённый из этого кадра, своему СУ
•инвертирует значение переменной r, и
•посылает отправителю через канал подтверждение.
Если проверка дала отрицательный результат, то получатель посылает кадр подтверждения с неверным битом (что заставит отправителя послать свой кадр ещё раз).
Если же кадр искажён, то получатель его игнорирует (предполагая, что отправитель, не дождавшись подтверждения, пошлёт это кадр ещё раз)
271
Блок-схема, представляющая описанное выше поведение, выглядит следующим образом:
' $
|
start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
r = 0 |
|
|
|
|
|
|
s |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
s? |
|
|
|
− |
|
6 |
|
|
6 |
|
|||||||||
&- |
|
%C ! ϕ(1 |
|
|
r) |
c |
|
|
|
|
|
inv(r) |
|
||||||||
|
C ? f |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
b |
s? |
|
|
|
|
|
|
|
− |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
+ |
f = |
|
|
− |
- |
bit(f) = r |
|
|
+ - |
Out ! info(f) |
|||||||||||
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Процесс, представляемый этой блок-схемой, обозначается знакосочетанием Receiver и имеет следующий вид:
Init = (r = 0)
a |
|
|
|
|
|
|
|
YH |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 HHHH |
|
|
|
|
|
||
|
|
HH |
HHC ! ϕ(1 |
− r) |
|
|
|
C ? f f = |
|
|
|
||||
|
HHH |
|
HH |
||||
|
|
( bit(f) = r |
) |
|
|||
|
|
f 6= |
|
H |
|
|
|
b |
|
6 |
? |
HH |
- c |
||
? |
|
|
|
|
-H |
|
|
|
|
|
|
|
|
||
|
|
f = |
|
) |
|
||
|
|
( bit(f) = r |
|
|
|||
|
|
|
6 |
? |
|
|
Out ! info(f) inv(r)
Процесс Protocol, соответствующий всему протоколу, определяется так же, как и в предыдущем пункте, выражением (8.23). Потоковый граф данного процесса имеет вид (8.24).
272