Теория параллелизма. Самостоятельные работы. Учебно-методическое пособие
.pdfСамостоятельная работа № 9 по теме “Недетерминизм. Сокрытие, Дивергенция”
Справочные материалы
Определение дивергенции процесса при сокрытии
( , ) ≡ ( ) ∩ (# > ).
Законы сокрытия
L8. Если ∩ = , то ( : → ( )) = ( : → ( ( ) ));
L9. Если , и ≠ , то ( : → ( )) = ∏ ( ( ) );
L10. Если ∩ ≠ , то ( : → ( )) = ( □ ( : ( ) → ( ( ) ))), где = ∏( ∩ ) ( ( ) )
Базовые задания
1)Выбрать процесс и множество его событий, в котором их сокрытие не приводит к дивергенции. Записать это множество событий и процесс, получившийся в результате их сокрытия.
2)Выбрать процесс и множество его событий (не равное алфавиту), в котором их сокрытие приводит к дивергенции. Записать это множество событий и процесс, получившийся в результате их сокрытия.
Параметры задания
Время выполнения: 4 дня.
Количество баллов: 20 баллов.
Образец решения
Задание 1
Требуемое условие выполняется, если множество событий состоит из событий, которые не образует цикла (без участия других событий) на диаграмме переходов процесса.
≡ ;
≡ { , };
Пусть обозначает подпроцесс процесса, к которому применяется правило, и начинает строку, описывающую, какое правило применяется. Тогда
31
=
L8
→ (_ ) | → (_ );_ =
L10, ≡ ( → _)
( □ ( → (_ ))) =
L8
( → (_ )) (( → (_ )) □ ( → (_ ))) ;
_ =
L10, ≡ ( → _)
( □ ( → (_ ))) =
L8
( → (_ )) (( → (_ )) □ ( → (_ ))) .
Перед каждым процессом в правых частях CSP-спецификации есть защитный префикс. Поэтому эти процессы не дивергентные.
Задание 2
Требуемое условие выполняется, если множество событий состоит из событий, которые образуют цикл (без участия других событий) на диаграмме переходов процесса.
≡ ;
≡ { , };
=
L9
(_ ) (_ );_ =
32
L10, ≡ _
( □ ( → ( ( → _) ))) =
L9
( □ ( → (_ ))) =
подстановка
(_ ) ((_ ) □ ( → (_ ))).
Таким образом, _ = _ . .. и, так как нет защитного префикса в правой части равенства перед _ , получаем дивергентный процесс.
_ =
L10, ≡ _
( □ ( → ( ( → _) ))) =
L9
( □ ( → (_ ))) =
подстановка
(_ ) ((_ ) □ ( → (_ ))).
Самостоятельная работа № 10 по теме “Коммуникация“
Справочные материалы
Операции с каналами
•! – запись сообщения (события) в канал .
•? – чтение сообщения (события) из канала .
Базовые задания
Предположим, что пользователь (среда) может генерировать последовательность сигналов быстрее, чем контроллер может их обработать. Модифицировать процессы системы, чтобы эта последовательность сигналов обрабатывалась так, что получал бы значение последнего сигнала. Должны быть приведены:
1)Взаимодействие участвующих процессов с помощью каналов и сообщений.
2)Модифицированное взаимодействие, решающее задачу быстрой обработки.
33
Параметры задания
Время выполнения: 4 дня.
Количество баллов: 20 баллов.
Образец решения
Задание 1
Пусть – канал между процессами и , – канал между процессамии . Тогда CSP-спецификации этих процессов изменяются с учетом каналов следующим образом.
Controller (C)
_ = →
= → |
1 ? 1 → | 2 ? 2 → );
= → → → |
→ ;
= → → → | → ;
= → → 12 ? 12 → |
→ ;
= → → 21 ? 21 → | → ;
34
= → → (
→ |
21 ? 21 → );
= → → (
→ |
12 ? 12 → );
Buttonx
_ = →
= → |
? → ! → → → .
User (E1)
_ = → ;
= _
1 ! 1 → (
_
→ → → 12) 2 ! 2 → (
_
→ → → 21);
12 = 12 ! 12 → → ( 21);
21 = 21 ! 21 → → ( 12);
35
= → → _.
Задание 2 |
|
|
|
|
|
|
Заменим процессы |
одним |
процессом |
. Пусть |
– |
канал между |
|
|
|
|
|
|
|
|
процессами |
и |
, через который передаются сообщения из множества |
||||
{ 1, 2, 12, 21}, |
– канал между процессами и |
|||||
|
|
|
|
|
|
|
, |
через |
который |
передаются |
сообщения |
из |
множества |
{ 1, 2, 12, 21}. Тогда |
CSP-спецификации этих процессов |
|||||
изменяются с учетом каналов следующим образом. |
|
|
||||
Controller (C)
_ = →
= → |
? 1 → | ? 2 → ;
= → → → |
→ ;
= → → → | → ;
= → → ? 12 → |
→ ;
= → → ? 21 → | → ;
36
= → → (
→ |
? 21 → );
= → → (
→ |
? 12 → );
Button
_ = →
= → | ? → ;
= ? → |
! → → → .
User (E1)
_ = → ;
= _
! 1 → (
_
→ → → 12) ! 2 → (
_
→ → → 21);
12 = ! 12 → → ( 21);
37
21 = ! 21 → → ( 12);
= → → _.
Самостоятельная работа № 11 по теме “Подчинение”
Справочные материалы
Пусть . Тогда в комбинации каждое действие (событие) может встречаться только когда позволяет ему встречаться. Таким образом, является подчиненным процессом для . Наоборот, может вовлекаться в действия (события) из независимо от . Поэтому является главным процессом в паре .
Бинарный оператор // называется оператором подчинения, если
// ≡ ( ) .
Этот оператор скрывает взаимодействие главного и подчиненного процессов от окружения. Алфавит процесса // определяется следующим образом: ( // ) =
.
В подчинении : // метка служит именем процесса , через которое осуществляется доступ из процесса к каналам, через которые взаимодействуют главный и подчиненный процессы. Например, для общего канала взаимодействие в задается через обращения . ? и . ! .
Базовые задания
1)Задать CSP-спецификацию параллельного взаимодействия с подчинением для пары процессов системы.
Оценка: 20 баллов.
Образец решения
Задание 1
Так как _ , то можно взять пару с подчиненным процессом и главным процессом _ . Определим CSP-спецификацию параллельного взаимодействия с подчинением : // _ для этой пары процессов.
Controller (C)
_ =
→
38
= → |
1 → | 2 → ;
= . ? → . ! → . ? → |
→ ;
= . ? → . ! → . ? → |
→ ;
= → → 12 → |
→ ;
= → → 21 → | → ;
= . ! → . ? → (
→ |
21 → );
= . ! → . ? → (
→ |
12 → );
Lift (P1)
= . ! → _ | . ! → _;
_ = . ! → _ | . ? → . ! → _;
39
_ = . ! → _ | . ? → . ! → _.
Самостоятельная работа № 12 по теме “Прерывания”
Справочные материалы
Прерывание является специальным видом последовательной композиции ; , при котором не требуется успешное завершение . Выполнение прерывается на вхождение первого события из и после этого никогда не возобновляется.
Для прерывания выполняются следующие свойства:
( ) =
И
( ) = { ̂ | ( ) ( )}.
Базовые задания
1)Найти все (под-)процессы системы, которые можно описать с помощью прерываний другим (под-)процессом.
2)Записать соответствующую модификацию этих процессов с указанием среды, которая регулирует эти прерывания.
Параметры задания
Время выполнения: 4 дня.
Количество баллов: 20 баллов.
Образец решения
Всего имеется 10 прерывающихся процессов. Опишем 6 из них.
Lift (P1)
Модификация процесса _ описывается с помощью оператора прерывания следующим образом:
_ = → _ → → _;
40
