Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures / lecture11.ppt
Скачиваний:
8
Добавлен:
06.06.2015
Размер:
233.98 Кб
Скачать

28.11.12 Лекция 11

Предикатное программирование

8. Язык, технология и методы верификации других классов программ (прод.)

Класс реактивных систем

Языковые средства Параллельная композиция

Интерливинговая развертка параллельной композиции

Коммуникационные протоколы Алгоритм Петерсона взаимного исключения доступа Протокол рукопожатия

8.Язык, технология

иметоды верификации других классов программ.

8.3.Реактивные

системы

Класс реактивных систем

Язык. База – язык простых процессов.

Дополнительно

Параллельная композиция простых процессов

F || G

Разделяемые переменные доступны для двух или более параллельных процессов

Защищенный оператор

with (<список разделяемых переменных>) {<оператор>}

Операторы посылки и приема сообщений

Сообщение используется для передачи информации между взаимодействующими процессами

message <имя сообщения>(<типы параметров>)

send m(e),

receive m(x) { B } else C

считаются защищенными

Сообщения

Виды сообщений

блокировка остановка процесса, посылающего (принимающего) сообщение

блокированные / неблокированные прием / передача синхронный / асинхронный обмен

рандеву блокированные прием и передача, синхронный обмен

каналы ограниченные, неограниченные

Erlang, Bjarne Däcker,

http://www.erlang.org/

Ericsson

<сообщение> ::= …

receive <имя сообщения>(<список переменных>)

receive { <сообщение1>: <оператор1> case <сообщение2>: <оператор2> … case <сообщениеN>: <операторN>

after <время ожидания>: <операторN+1>

}

if <сообщение> then неблокированный прием

главный процесс содержит очередь сообщений

каналы, порты

Параллельная композиция

Простой процесс F (или G) в параллельной композиции F || G

представлен в виде автомата – гиперграфа действий. Действие – фрагмент процесса без циклов,

соответствующий гипердуге (гиперфункция). Разные концы гипердуги соответствуют разным вершинам автомата. Нет инвариантов в вершинах. Для каждого действия можно

построить логику. Канал A – список (очередь) сообщений

L(send m(e)”) A’= append(A, e) L(receive m(x) C else D”)

if (A≠nil) x=A.car A'=A.cdr L(C) else L(D)

Нет конфликтов между параллельно исполняемыми действиями разных процессов. Параллельная композиция a || b действий a и b из разных процессов линеаризуется в

виде a; b или b; a. Параллельное исполнение F || G может быть представлено последовательным в виде интерливинга

(interleaving - перемешивания) действий.

Трасса – это последовательность действий на некотором пути в графе действий.

Исполнение простого процесса – исполнение последовательности действий некоторой трассы.

Трасса параллельной композиции F || G образуется перемешиванием трасс для F и G.

Логика трассы c1, c2, …, cn есть L(c1) & L(c2)&…&L(cn). Трасса достижима, если ее логика не равна false

Спецификация параллельной композиции

F || G в виде интерливинговой развертки – автомата инвариантов.

a | b – недетерминированный выбор: либо a, либо b. Гипердуга спецификации имеет вид:

m: invariant” <инвариант>; // pF = “a” & pG = “b”

a(cond1 #m1: cond2 #m2) | b(cond3 #m3: cond4 #m4: …)

•Развертка должна быть полной.

•Гипертройка: <инвариант>{a(cond1 #m1: cond2 #m2) } m1:<инвариантm1 >, m2:<инвариантm2>

программа, представленная гипертройкой, должна быть корректной.

Коммуникационные протоколы

Протокол стандарт, определяющий взаимодействие двух или более объектов (узлов) соединение, аутентификацию, кодирование и передачу данных, …

Коммуникационный протокол – стандарт, определяющий правила передачи информации между двумя удаленными узлами

a

ввод

A

a

передача

B a

вывод

ввод

Отправитель

 

 

Канал данных

 

 

Получатель

вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Канал ответов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. Схема взаимодействия отправителя и получателя

Соседние файлы в папке lectures