Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
23.05.2015
Размер:
1.7 Mб
Скачать

при помощи процессов-посредников, т.е. программы взаимодействуют друг с другом через посредство некоторых процессов, которые синхронно взаимодействуют с каждой из программ.

Взаимодействие между параллельно работающими программами обычно реализуется одним из следующих двух способов.

1. Взаимодействие через общую память.

В данном случае такими посредниками являются ячейки памяти, к которым имеют доступ обе программы.

Взаимодействие может осуществляться, например, так: одна программа пишет информацию в эти ячейки, а другая читает содержимое ячеек.

2.Взаимодействие путем посылки сообщений.

Вданном случае посредником является канал, с которым программы могут осуществлять следующие операции:

посылка сообщения в канал передающей программой,

и

приём сообщения принимающей программой.

Канал может представлять собой буфер, хранящий несколько сообщений. Сообщения в канале могут быть организованы по принципу очереди (т.е. сообщения покидают канал в том же порядке, в котором они в него поступают).

3.5Ограничение

Пусть P = (S, s0, R) некоторый процесс, и L – произвольное подмножество множества Names.

Ограничением P по L называется процесс

P \ L = (S, s0, R0)

который получается из P удалением тех переходов, которые имеют метки с именами из L, т.е.

R0 = (

( s

a

- s0

) R

name(a) L )

def

 

 

 

 

a = τ,

или

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

52

Операция ограничения используется, как правило, совместно с операцией параллельной композиции для представления таких процессов, которые

состоят из нескольких компонентов, и

взаимодействие между этими компонентами должно удовлетворять некоторым ограничениям.

Например, пусть P1 и P2 – торговый автомат и покупатель, которые рассматривались в предыдущем параграфе.

Мы хотели бы описать процесс, являющийся моделью такого параллельного функционирования процессов P1 и P2, при котором эти процессы могут совершать действия, связанные с поку- пкой-продажей шоколадки, только совместно.

Искомый процесс может быть получен из процесса P1|P2 применением операции ограничения по множеству имён всех действий, которые связаны с покупкой-продажей шоколадки, т.е. данный процесс описывается выражением

def

|P2) \ {мон, шок}

(3.10)

P = (P1

Графовое представление процесса (3.10) имеет вид

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

(s10, s20)

(s10, s21)

(s10, s22)

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

@

τ

 

 

 

@

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

R@

 

 

 

 

 

 

@

 

(s11, s20)

(s11, s21)

(s11, s22)

 

 

 

 

 

@

 

 

 

 

 

 

 

 

@@τ

 

 

 

 

 

 

@

@

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

@R

 

 

 

 

 

(s12, s20)

(s12, s21)

(s12, s22)

 

 

 

 

 

 

 

 

 

53

После удаления недостижимых состояний получится процесс,

имеющий следующее графовое представление:

(s10, s20) τ -(s11, s21) τ -(s12, s22)

Рассмотрим другой пример. Немного изменим определения торгового автомата и покупателя: пусть они еще и сигнализируют об успешном выполнении своей работы, т.е. их процессы имеют, например, следующий вид:

def

P1 = мон?.шок!.звяк!.0

def

P2 = мон!.шок?.ура!.0

В этом случае графовое представление процесса (3.10) после удаления недостижимых состояний имеет вид

 

 

 

 

 

звяк!

 

 

τ

-

τ

-

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ура!

 

 

ура!

 

 

 

 

?

звяк!

- ?

 

 

 

 

 

 

 

Данный процесс допускает исполнение тех невнутренних действий, которые не связаны с покупкой и продажей шоколадки.

Отметим, что в данном случае в процессе (3.10) присутствует недетерминизм, хотя в компонентах P1 и P2 его нет. Причиной возникновения этого недетерминизма является наше неполное знание о моделируемой системе: поскольку мы не имеем точных знаний о длительности действий звяк! и ура!, то модель системы должна допускать любой порядок их выполнения.

54

3.6Переименование

Следующая операция, которую мы рассмотрим - это унарная операция переименования.

Для задания этой операции необходимо определить функцию

f : Names → Names

называемую переименованием.

Действие данной операции на процесс P заключается в изменении меток переходов:

метки вида α? заменяются на f(α)?, и

метки вида α! заменяются на f(α)!

Получившийся процесс обозначается знакосочетанием P [f]. Если переименование f действует нетождественно лишь на

имена из списка

α1, . . . , αn

и отображает их в имена

β1, . . . , βn

соответственно, то для P [f] мы будем иногда использовать эквивалентное обозначение

P [β11, . . . , βnn]

Операция переименования позволяет многократно использовать один и тот же процесс P в качестве компоненты при построении более сложного процесса P 0. Эта операция используется для предотвращения “конфликтов” между именами действий, используемых в различных вхождениях P в P 0.

3.7Свойства операций на процессах

В этом параграфе мы приводим некоторые простейшие свойства определённых выше операций на процессах. Все эти свойства

55

имеют вид равенств. Для первых двух свойств мы даём их обоснование, остальные свойства приводятся без комментариев ввиду их очевидности.

Напомним (см. параграф 2.7), что мы считаем два процесса равными, если

они изоморфны, или

один из этих процессов можно получить из другого путём удаления некоторых недостижимых состояний и связанных с ними переходов.

1.Операция + ассоциативна, т.е. для любых процессов P1, P2 и P3 верно равенство

(P1 + P2) + P3 = P1 + (P2 + P3)

Действительно, пусть процессы Pi (i = 1, 2, 3) имеют вид

Pi = (Si, s0

, Ri) (i = 1, 2, 3)

(3.11)

i

 

 

причём множества состояний S1, S2 и S3 попарно не пересекаются. Тогда обе части данного равенства равны процессу P = (S, s0, R), компоненты которого определяются следующим образом:

def

S2

S3 {s0}, где s0 – новое состояние, не

S = S1

входящее в S1, S2 и S3

R содержит все переходы из R1, R2 и R3

для каждого перехода из Ri (i = 1, 2, 3) вида

0

 

a -

 

 

si

a -

 

 

s

R содержит переход s0

 

s

 

 

Из свойства ассоциативности операции + следует, что допустимы выражения вида

P1 + . . . + Pn

(3.12)

56

так как при любой расстановке скобок в выражении (3.12) получится один и тот же процесс.

Процесс, являющийся значением выражения (3.12) можно описать явно следущим образом.

Пусть процессы Pi (i = 1, . . . , n) имеют вид

 

Pi = (Si, si0, Ri) (i = 1, . . . , n)

(3.13)

причём множества состояний S1, . . . , Sn попарно не пересекаются. Тогда процесс, являющийся значением выражения

(3.12), имеет вид

P = (S, s0, R)

где компоненты S, s0, R определяются следующим образом:

def

. . . Sn {s0}, где s0 – новое состояние, не

S = S1

входящее в S1, . . . , Sn

R содержит все переходы из R1, . . . , Rn

для каждого перехода из Ri (i = 1, . . . , n) вида

0

 

a -

 

 

si

a -

 

 

s

R содержит переход s0

 

s

 

 

2.Операция | ассоциативна, т.е. для любых процессов P1, P2 и P3 верно равенство

(P1 | P2) | P3 = P1 | (P2 | P3)

Действительно, пусть процессы Pi (i = 1, 2, 3) имеют вид (3.11). Тогда обе части данного равенства равны процессу P = (S, s0, R) компоненты которой определяются следующим образом:

S def

S

1 ×

S

2 ×

S

 

def

=

 

 

 

3

=

{(s1, s2, s3) | s1

• s0

def

 

 

 

 

 

 

= (s10, s20, s30)

 

 

def

=

S1, s2 S2, s3 S3}

• для

57

– каждого перехода s1

a -

s0 из R1, и

 

 

 

 

1

– каждой пары состояний s2 S2, s3 S3

R содержит переход

 

 

 

(s1, s2, s3)

 

a -

(s0 , s2, s3)

 

 

 

 

1

• для

– каждого перехода s2 a - s02 из R2, и

– каждой пары состояний s1 S1, s3 S3

R содержит переход

(s1, s2, s3)

 

a -

(s1, s0

, s3)

 

 

 

 

2

 

• для

a -

 

 

– каждого перехода s3

s0 из R3, и

 

 

 

3

 

– каждой пары состояний s1 S1, s2 S2

R содержит переход

 

 

 

 

(s1, s2, s3)

 

a -

(s1, s2

, s0 )

 

 

 

 

 

 

 

3

для

каждой пары переходов с комплементарными мет-

ками

 

 

a -

s0

 

 

 

s

1

 

R

1

 

 

 

 

 

1

 

 

 

 

a

 

 

s

2

 

 

-

s0

 

R

2

 

 

 

 

 

 

2

 

и

– каждого состояния s3 S3

R содержит переход

(s1, s2, s3)

τ -

(s0

, s0

, s3)

 

 

1

2

 

для

каждой пары переходов с комплементарными мет-

ками

 

 

a -

s0

 

 

 

s

1

 

R

1

 

 

 

 

 

1

 

 

 

 

a

 

 

s

3

 

 

-

s0

 

R

3

 

 

 

 

 

 

3

 

и

58

– каждого состояния s2 S2

R содержит переход

(s1, s2, s3)

τ -

(s0

, s2

, s0

)

 

 

1

 

3

 

для

каждой пары переходов с комплементарными мет-

ками

 

 

 

a -

s0

 

 

 

 

 

s

2

 

 

R

2

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

a

 

 

 

 

s

3

 

 

 

-

s0

 

R

3

 

 

 

 

 

 

и

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– каждого состояния s1 S1

 

 

 

 

 

R содержит переход

 

 

 

 

 

 

 

 

 

 

 

 

(s1, s2, s3)

 

 

τ -

(s1

, s0

, s0

)

 

 

 

 

 

 

 

 

 

 

 

2

 

3

 

Из свойства ассоциативности операции |

следует, что до-

пустимы выражения вида

 

 

 

 

 

 

 

 

 

P1 | . . . | Pn

 

 

 

 

(3.14)

так как при любой расстановке скобок в выражении (3.14) получится один и тот же процесс.

Процесс, являющийся значением выражения (3.14) можно описать явно следущим образом.

Пусть процессы Pi (i = 1, . . . , n) имеют вид (3.13). Тогда процесс, являющийся значением выражения (3.14), имеет

вид

P = (S, s0, R)

где компоненты S, s0, R определяются следующим образом:

S

def

S

1 ×

. . .

×

S

def

def

=

 

 

 

n =

=

{(s1, . . . , sn) | s1 S1, . . . , sn Sn}

• s0

def

 

 

 

 

 

 

= (s10, . . . , sn0 )

 

• для

– каждого i {1, . . . , n}

59

– каждого перехода si

 

a -

s0

из Ri, и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

– каждого списка состояний

 

 

 

 

 

 

 

 

 

 

s1, . . . , si−1, si+1, . . . , sn

 

 

 

где j {1, . . . , n}

sj Sj

 

 

 

 

 

 

R содержит переход

 

 

 

 

 

 

 

 

 

(s

, . . . , s

n

)

a -

(s

, . . . , s

i−1

, s0, s

i+1

, . . . , s

n

)

 

1

 

 

 

 

1

 

 

i

 

 

для

каждой пары индексов i, j {1, . . . , n}, где i < j

каждой пары переходов с комплементарными мет-

ками

 

 

a -

 

s0

 

 

 

 

s

i

 

 

R

i

 

 

 

 

 

 

 

 

-

i

 

 

 

 

a

 

 

 

s

j

 

 

 

s0

 

R

j

 

 

 

 

 

 

 

 

 

 

j

 

 

и

– каждого списка состояний

s1, . . . , si−1, si+1, . . . , sj−1, sj+1, . . . , sn

где k {1, . . . , n} sk Sk

R содержит переход

!

(s1, . . . , sn) τ - s1, . . . , si−1, s0i, si+1, . . . , sj−1, s0j, sj+1, . . . , sn

3.Операция + коммутативна, т.е. для любых процессов P1 и P2 верно равенство

P1 + P2 = P2 + P1

4.Операция | коммутативна, т.е. для любых процессов P1 и P2 верно равенство

P1 | P2 = P2 | P1

60

5.0 является нейтральным элементом относительно операции

| :

P | 0 = P

Для операции + аналогичное свойство тоже имеет место, если вместо равенства процессов будет использовано понятие сильной эквивалентности процессов (которое определяется ниже). Данное свойство, а также свойство идемпотентности операции + доказываются в параграфе 4.5 (теорема 4).

6.0 \ L = 0

7.0[f] = 0

8.P \ L = P , если L ∩ names(Act(P )) = .

(напомним, что Act(P ) обозначает множество действий a

Act \ {τ}, таких, что P содержит переход с меткой a)

(

9. (a.P ) \ L =

0, если a 6= τ и name(a) L a.(P \ L), иначе

10.(P1 + P2) \ L = (P1 \ L) + (P2 \ L)

11.(P1 | P2) \ L = (P1 \ L) | (P2 \ L), если

L ∩ names(Act(P1) ∩ Act(P2)) =

12.(P \ L1) \ L2 = P \ (L1 L2)

13.P [f] \ L = (P \ f−1(L))[f]

14.P [id] = P , где id – тождественная функция

15.P [f] = P [g], если сужения функций f и g на множество names(Act(P )) совпадают.

16.(a.P )[f] = f(a).(P [f])

17.(P1 + P2)[f] = P1[f] + P2[f]

61

18.(P1 | P2)[f] = P1[f] | P2[f], если сужение функции f на множество

names(Act(P1) Act(P2))

является инъективной функцией.

19.(P \ L)[f] = P [f] \ f(L), если f иньективна.

20.P [f][g] = P [g ◦ f]

62