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

Это означает, что имеет место соотношение

Job_Shop ≈ Abs_Job_Shop

(6.4)

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

Job_Shop и Abs_Job_Shop

не выходит рёбер с меткой τ, то отсюда и из (6.4) следует искомое соотношение (6.2).

6.3Неконфликтное использование ресурса

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

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

Предположим, что необходимо обеспечить неконфликтное использование этой комнаты группами. Это означает, что когда одна из групп проводит в комнате совещание, другой группе должно быть запрещено проводить своё совещание в этой комнате.

Для решения этой задачи создаётся специальный процесс –

диспетчер.

Если какая-либо из групп хочет провести совещание в этой комнате, она должна послать диспетчеру заявку на предоставление ей права пользования комнатой для проведения этого совещания.

Когда диспетчер разрешает какой-либо группе использовать комнату, он посылает ей уведомление об этом.

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

Рассмотрим описание работы указанной системы при помощи теории процессов.

Пусть число групп равно n (n ≥ 2).

147

Диспетчер мы опишем как процесс с именем D, графовое представление которого содержит для каждого i = 1, . . . , n под-
граф D
I@
@
@

reqi ?

@@ reli ?

 

@

@

? acq ! @@di1 i - di2

т.е.

n

X

D reqi?. acqi!. reli?. D

i=1

Действия, входящие в Act(D), имеют следующий смысл:

reqi? – получение заявки от i-й группы

acqi! – уведомление i-й группы о том, что она имеет право пользоваться комнатой

reli? – получение сообщения от i-й группы об освобождении ею комнаты.

Опишем теперь поведение каждой группы.

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

Мы будем представлять

начало проведения совещания в комнате действием start!,

и

окончание совещания - действием finish!.

148

Поведение i-й группы мы опишем в виде процесса Gi, который имеет следующее графовое представление:

 

reli!

 

gi0

 

 

gi4

 

 

 

 

 

 

 

6

 

 

 

finishi!

 

 

 

6

reqi!

 

gi3

 

gi1

acqi?

- gi2

 

?

 

 

 

starti!

 

 

 

 

 

т.е. Gi reqi!. acqi?. start!. finish!. reli!. Gi.

Совместное поведение диспетчера и групп можно описать следующим процессом:

Sys = (D | G1 | . . . | Gn) \ L

где L = {reqi, acqi, reli | i = 1, . . . , n}.

Потоковый граф системы, состоящей из диспетчера и групп для n = 2 показан на рисунке

'u

$1

' $2

'u

$

 

start

 

 

 

 

 

 

 

start

 

 

 

 

u

rel

- e

 

e

 

u

 

 

 

 

 

 

 

 

 

rel

 

 

 

 

 

 

G1

e acq1

 

u

D u acq2

- e G2

 

 

 

 

u

req1

- e

 

e req2

 

u

 

 

&uf

% &

%

&u

%

 

inish

 

 

 

 

 

 

 

finish

 

 

Покажем теперь, что алгоритмы работы диспетчера и групп действительно обеспечивают неконфликтный режим использования комнаты, который заключается в том, что после начала проведения совещания в комнате какой-либо группой (то есть после выполнения этой группой действия start!) никакая другая

149

n
P τ.τ.start!.
i=1
i=1

группа не может начать проводить в этой комнате своё совещание (т.е. тоже выполнить действие start!), до тех пор первая группа не закончит своё совещание (т.е. пока не будет выполнено действие finish!).

Определим процесс Spec следующим образом:

start!finish! -

т.е. Spec start!. finish!. Spec.

Наличие неконфликтного режима использования комнаты эквивалентно истинности соотношения

Sys ≈ Spec

(6.5)

Это соотношение можно рассматривать как требование к системе, состоящей из диспетчера и групп.

Докажем соотношение (6.5).

Преобразуем процесс Sys, применив несколько раз теорему о разложении:

Sys

 

 

nacqi!. reli?. D | G1 | . . .

P τ. . . . | acqi?. start!. finish!. reli!. Gi | . . . \ L

i=1

. . . | Gn

 

 

 

 

 

nreli?. D | G1 | . . .

P τ.τ. . . . | start!. finish!. reli!. Gi | . . . \ L

. . . | Gn

 

 

reli?. D | G1 | . . .

. . . | finish!. reli!. Gi | . . . \ L

. . . | Gn

 

n

 

 

reli?. D | G1 | . . .

 

 

 

 

τ.τ.start!. finish!. . . .

reli!. Gi

 

. . .

 

 

L

 

=1

 

 

. . . | Gn

 

 

|

 

 

 

 

\

iP

 

 

 

 

 

 

 

 

 

 

 

 

|

 

 

 

 

 

 

 

 

 

 

 

 

D G1

. . .

 

 

 

 

 

 

n

τ.τ.start!. finish!. τ. . . .| Gi|

 

. . .

 

L =

 

=1

 

 

. . . | Gn|

 

 

 

\

 

 

 

iP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

τ.τ.start!. finish!. τ.Sys|

Sys

 

 

 

}

 

=

n

{z

 

 

 

 

 

 

=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

iP

 

 

 

 

 

 

 

 

 

 

 

 

 

150