- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
Глава 9
Представление структур данных в виде процессов
9.1Понятие структуры данных
Структура данных (СД) – это дискретная динамическая система, каждое состояние которой можно интерпретировать как совокупность данных (т.е. некоторых значений), хранящихся в текущий момент в этой системе.
Как правило, каждое состояние СД представляет собой совокупность из нескольких компонентов, каждая из которых является содержимым некоторого ресурса (например, содержимым ячейки памяти).
Одним из способов формального описания СД является представление их в виде процессов.
Если процесс P является представлением некоторой СД, то имена в P можно интерпретировать как точки доступа к данным, содержащимся в этой СД. Объекты, соответствующие этим именам, могут иметь виртуальный характер. Например, в качестве таких объектов могут выступать криптографические ключи.
Представление СД в виде процессов позволяет формализовать понятие активных данных (= знаний), которые развиваются в результате наличия у них неполноты или противоречивости. Активность структур данных заключается в том, что они могут сами инициировать запросы к окружающей среде с целью полу-
303
чения дополнительной информации для достижения согласованности в знаниях, которые содержатся в этих СД.
Вэтой главе мы приводим несколько примеров описания СД
ввиде процессов. Каждый из этих процессов задаётся в виде рекурсивного определения.
Ниже мы будем отождествлять процесс, представляющий некоторую СД, с самой этой СД.
9.2СД “память с 2k ячейками”
СД “память с 2k ячейками” (где k ≥ 0) – это процесс
[[MEMk(~x)]] |
(9.1) |
где MEMk – процессное имя, и ~x – список из 2k переменных вида
~x = {xm | m {0, 1}k}
каждая из которых соответствует некоторой ячейке памяти: для каждого m {0, 1}k значение переменной xm представляет собой содержимое ячейки памяти с адресом m.
Мы будем предполагать, что процесс [[MEMk(~x)]] работает следующим образом:
1.сначала, если k > 0, то через точку доступа α в процесс [[MEMk(~x)]] поступает адрес m,
2.затем через точку доступа β в процесс [[MEMk(~x)]] поступает значение v, которое надо записать в ячейке по адресу m
3.после чего через точку доступа γ процесс [[MEMk(~x)]] выдаёт значение, которое содержалось в ячейке по адресу m до выполнения предыдущего шага.
Процессы, соответствующие процессным выражениям вида MEMk(~x), определяются следующим РО:
•MEM0(x) = β?y . γ!x . MEM0(y)
(процесс [[MEM0(x)]] – это - ячейка памяти, хранящая значение x)
304
• для каждого k ≥ 0 |
|
|
|
|
|
|
|
|
MEMk+1(~x · ~y) = |
|
|
α0 |
, β0 |
, γ0, |
|
||
= |
MEMk(~x) [| |
α0/α, β0/β, γ0/γ ] |
\ ( |
) |
||||
|
SW IT CH |
|
| |
|
|
|
||
|
MEMk(~y) [ α1/α, β1/β, γ1/γ ] |
α1 |
, β1 |
, γ1 |
||||
|
|
|
|
|
|
|
|
|
где
–~x · ~y – список из 2k+1 различных переменных, представленный в виде конкатенации двух списков из 2k переменных
–SW IT CH - это процесс, называемый переключателем, и представляемый следующей блок-схемой:
START
- s
?
α?m + ? −mˆ = 0
|
? |
|
? |
|
||
|
α0!m0 |
|
α1!m0 |
|
||
|
|
? |
|
|
? |
|
|
β?u |
|
β?u |
|
||
|
|
|
|
|
|
|
|
|
? |
|
|
? |
|
|
β0!u |
|
β1!u |
|
||
|
|
|
|
|
|
|
|
|
? |
|
|
? |
|
|
γ0?y |
|
γ1?y |
|
||
|
|
|
|
|
|
|
|
|
? |
|
|
? |
|
|
γ!y |
|
γ!y |
|
||
|
|
|
||||
|
|
|
|
|
|
|
где
305
–mˆ = первый бит в битовой строке m, и
–m0 = строка из k−1 битов, получаемая из m удалением первого бита.
Процесс [[MEMk+1(~x · ~y)]] изображается следующим потоковым графом:
|
'd d t |
$ |
|
|
|||||||
|
|
|
α |
β γ |
|
|
|
|
|
||
|
t |
|
|
|
d@I |
|
|
|
|||
|
SW IT CH |
|
|
|
|||||||
|
|
|
|
|
|
|
|
||||
|
β0 &d t |
β@% |
|
||||||||
|
α0 t |
@ t@ @ γ1 |
$ |
||||||||
'dd t |
$'d d @t |
||||||||||
|
|
|
@ |
1 |
@ |
|
|
||||
|
|
γ0 |
α1 |
|
|
|
|
|
|||
|
|
|
|
R@ R@ |
|
|
|
||||
MEMk(~x) |
|
|
|
MEMk(~y) |
|
||||||
& |
|
%& |
|
|
|
% |
Читателю предлагается самостоятельно доказать, что процесс [[MEMk(~x)]] удовлетворяет следующей спецификации: если k > 0, то для каждого процесса P
|
α!m . β!u . γ| ?y . P |
! \ {α, β, γ} ≈ |
||
|
MEMk(~x) |
|
|
+ |
≈ |
(y := xm) . P |
|
| |
! \ {α, β, γ} |
+ |
(xm := u) . MEMk(~x) |
|
|
Операция
• чтения значения, содержащегося в ячейке процесса
[[MEMk(~x)]]
по адресу m (без изменения содержимого этой ячейки), и
• занесения этого значения в переменную y процесса P
представляется процессным выражением |
(где z 6 P ) |
||
α!m . β!0 . γ| |
?y . α!m . β!y . γ?z . P |
! \ {α, β, γ} |
|
MEMk(~x) |
|
|
|
|
|
|
(9.2) |
306
Читателю предлагается самостоятельно доказать, что
(9.2) ≈ |
(y := xkm) . P| |
! \ {α, β, γ} |
+ |
MEM (~x) |
|
Можно изменить определение процесса [[MEMk(~x)]] так, чтобы новый процесс удовлетворял спецификации
+
MEMk(~x) ≈
+ |
β?y . (xm := y) . MEMk(~x) + γ!xm . MEMk(~x) |
≈ α?m. |
т.е.
•сначала в процесс [[MEMk(~x)]] вводится адрес m,
•а потом, в зависимости от выбора окружающей среды,
–либо в [[MEMk(~x)]] записывается новое значение по адресу m
–либо читается значение, хранящееся в [[MEMk(~x)]] по адресу m
Для этого надо по-другому определить процесс [[MEM0(x)]]:
MEM0(x) = β?y . MEM0(y) + γ!x . MEM0(x)
Работа с новым процессом [[MEMk(~x)]] происходит следующим образом.
Операция записи значения выражения e в ячейку по адресу m представляется процессным выражением
|
|
MEMk(~x) | α!m . β!e . 0
Операция чтения процессом P значения, записанного в ячейке процесса [[MEMk(~x)]] по адресу m, и занесения этого значения в переменную y процесса P , представляется процессным выражением
|
|
MEMk(~x) | α!m . γ?y . P
307
9.3СД “стек”
Стек – это СД с точками доступа α и γ, с которой можно выполнять следующие операции:
1.положить значение v в стек (действие α ! v)
2.если стек непуст, то взять головной элемент стека (действие
γ ? x).
СД “стек” представляется совокупностью процессных выражений
{P USHn(x1, . . . , xn) | n ≥ 0} |
(9.3) |
где для каждого n ≥ 0 P USHn – процессное имя, и ПВ
P USHn(x1, . . . , xn)
представляет процесс “стек, хранящий n значений”.
Процессы, соответствующие ПВ из совокупности (9.3) определяются следующим РО:
1.P USH0 = α?x . P USH1(x) + γ!$ . 0
2.для каждого n ≥ 0
P USHn+1(x, x1, . . . , xn) = |
! \ {β, δ} |
|
= |
P USHn(x|1, . . . , xn)[β/α, δ/γ] |
|
|
CELL(x) |
|
где ПВ CELL(x) представляет процесс с точками доступа α, β, γ, δ, называемый ячейкой памяти, и определяемый следующим образом:
CELL(x) = |
(y = |
($)) |
? P USH0 + (y = $) ? CELL(y) |
! |
|
= |
γ!?x . δ?!y . |
||||
|
α y . β x . CELL y |
+ |
|
||
|
|
|
|
6 |
Потоковый граф процесса [[P USHn(x1, . . . , xn)]] имеет следующий вид:
308
α'e u$β - . . .
uCELL(x1) e δ . . .
γ& %
β -'e
uCELL(xn)
δ &
u$β -'e $
e uP USH0
%δ & %
Читателю предлагается самостоятельно доказать, что совокупность процессов, соответствующих ПВ из (9.3), удовлетворяет следующей спецификации: для каждого n ≥ 0
!
+ |
α?y . P USHn+2(y, x, x1, . . . , xn)+ |
P USHn+1(x, x1, . . . , xn) ≈ |
γ!x . P USHn(x1, . . . , xn) |
9.4СД “очередь”
Очередь – это СД с точками доступа α и γ, с которой можно выполнять следующие операции:
1.добавить значение v в конец очереди (действие α ! v)
2.если очередь непуста, то взять первый элемент очереди (действие γ ? x).
СД “очередь” представляется совокупностью процессных выражений
{QUEUEn(x1, . . . , xn) | n ≥ 0} |
(9.4) |
где для каждого n ≥ 0 QUEUEn – процессное имя, и ПВ
QUEUEn(x1, . . . , xn)
представляет процесс “очередь, хранящая n значений”. Процессы, соответствующие ПВ из совокупности (9.4) опре-
деляются следующим РО:
1.QUEUE0 = α?x . QUEUE1(x) + γ!$ . 0
2.для каждого n ≥ 0
QUEUEn+1(x, x1, . . . , xn) = |
! \ {β, δ} |
|
= |
QUEU(En(|x1, . . . , xn)[β/α, δ/γ] |
|
|
CELL x) |
|
309
где ПВ CELL(x) представляет процесс с точками доступа α, β, γ, δ, называемый ячейкой памяти, и определяемый следующим образом:
CELL(x) = |
|
|
= |
α?y . β!x . CELL(y) + γ!x . CELL(y) + |
|
|
γ!x . δ?y . (y = $) ? QUEUE0 + (y 6= $) ? CELL(y) |
|
Потоковый граф процесса [[QUEUEn(x1, . . . , xn)]] имеет такой же вид, как и потоковый граф в пункте 9.3.
Читателю предлагается самостоятельно доказать, что совокупность процессов, соответствующих ПВ из (9.4), удовлетворяет следующей спецификации: для каждого n ≥ 0
|
|
+ |
|
QUEUEn+1(x, x1, . . . , xn) ≈ |
! |
||
≈ |
γ!x . QUEUEn(x1 |
, . . . , xn) |
|
+ |
α?y . QUEUE (x, x , . . . , x , y) + |
||
|
n+2 |
1 |
n |
310