- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
Глава 10
Семантика языка параллельного программирования
Семантика языка программирования представляет собой правило, сопоставляющее каждой конструкции этого языка некоторый математический объект. В качестве такого объекта может выступать, например, логическая формула или процессное выражение.
Главной целью определения семантики языка программирования является сведение задач анализа свойств программ на этом языке к задачам анализа математических утверждений, соответствующих этим свойствам.
В этой главе мы рассмотрим в качестве примера определение семантики простейшего языка параллельного программирования в терминах теории процессов.
10.1Описание языка параллельного программирования
В этом параграфе мы описываем простейший язык параллельного программирования, который мы будем обозначать символом
L.
311
10.1.1Конструкции языка L
Конструкции языка L делятся на следующие три класса.
1.Выражения.
Понятие выражения языка L совпадает с аналогичным понятием, определённым в параграфе 7.2.3. Выражения строятся из переменных, констант и ФС. Каждому выражению e сопоставлен некоторый тип type(e).
2.Декларации.
Каждая декларация D имеет один из следующих трёх видов:
(a)объявление локальной переменной:
VAR x |
(10.1) |
где x – имя переменной
(b) объявление ресурса:
RESOURCE R |
(10.2) |
где R - имя ресурса, который может представлять собой, например, устройство ввода или вывода
(c) описание процедуры:
PROCEDURE G(u, v) IS C |
(10.3) |
где
•G – имя процедуры,
•u – переменная, изображающая аргумент процедуры
•v – переменная, изображающая результат процедуры
•C – оператор (тело процедуры), в который переменные u и v входят как формальные параметры этой процедуры.
312
3.Операторы.
Каждый оператор представляет собой описание некоторого алгоритма.
Ниже
•операторы обозначаются символом C
•декларации обозначаются символом D
•переменные обозначаются символами x, y, z, u, v, . . .
•выражения обозначаются символом e
•формулы (т.е. выражения типа bool) обозначаются символом b
причём при всех этих символах могут быть индексы. Операторы имеют следующий вид.
(a) присваивание:
x := e
где type(x) = type(e)
(b) условный переход:
if b then C1 else C2
(c) цикл:
while b do C
(d) ввод:
input x
(e) вывод:
output e
(f) пустой оператор:
skip
(g) последовательная композиция:
C1; C2
313
(h) параллельная композиция:
C1 par C2
(i) блок:
begin {D1, . . . , Dk; C} end
Блок “связывает” все вхождения объектов, объявленных в декларациях D1, . . . , Dk: эти объекты являются видимыми только внутри этого блока.
(j) вызов процедуры:
call G(e, z)
где
•G – имя вызываемой процедуры,
•e – выражение, значение которого является аргументом процедуры G, и
•z – переменная, в которую будет занесён результат выполнения процедуры G.
(k)связывание оператора с ресурсом:
with R do C
где R – имя некоторого ресурса.
10.1.2Программы на языке L
Программа на языке L представляет собой оператор
begin {D1, . . . , Dk; C} end
где все переменные, ресурсы, и процедуры, имена которых входят в C, объявлены
•в декларациях D1, . . ., Dk,
•или в тех декларациях, которые содержатся в C.
Программа может взаимодействовать с окружающей средой только путём выполнения операторов ввода и вывода.
314