
- •1. Процессы, коммуникация и координация в распределенных системах
- •1.1. Процессы
- •1.1.1. Структуры действий как процессы
- •1.1.2. Структурирование процессов
- •1.1.3. Последовательное представление процессов с помощью трасс
- •1.1.4. Рашуженис процесса на подпроцессы
- •1.1.5. Действия как переходы состояний
- •1,2. Описания систем через множество процессов
- •1.2.1. Сети Петри
- •1.2.2. Термы для описания процессов
- •1.2.3. Синхронизация и координация агентов
- •1.2.4. Предикаты над процессами
- •1.3. Языки программирования для описания взаимодействующих систем
- •1.3.1. Коммуникация через обмен сообщениями
- •1.3.2. Общие программные переменные
- •1.3.3. Языковые средства для параллельных ходов работы
- •1.3.4. Потоки ввода/вывода
- •2.1. Основные аспекты операционных систем
- •2.1.1. Функции операционной системы
- •2.1.2. Режимы обработки
1.1.4. Рашуженис процесса на подпроцессы
В практических приложениях информатики встречаются распределенные системы большой количественной и качественной сложности. Для структурированного обращения с ними решающее значение имеет их разложение на частичные компоненты. Поэтому обратимся теперь к вопросу о том, может ли процесс ро быть рахтожен параллельным или последовательным образом в подпроцессы р) и р2, или наоборот - можно ли процесс ро представлять себе образованным из подпроцессов. Такая форма разложения позволит сделать достаточно простое сопоставление между
множествами процессов для описания системы. Пусть заданы следующие процессы:
Ро = (Ео, <о, «о), Pi = (Еь <ь а0,
Р2 = (Е2, <2ь а2)-
Мы скажем, что процесс ро можно понимать как последовательную композицию процессов pi и р2 или, наоборот, что процесс ро допускает последовательное разложение в процессы р! и Р2, если процесс ро можно получить с помощью процессов р] и р2, выполняемых последовательно один за другим. Для такого отношения между тремя процессами будем писать предикат
isseq(p0, рь р2).
Математически этот предикат над процессами определяется следующим уравнением:
isseq(p0, рь Р2) =def (Ео = Ei и Е2) л (Ei о Е2 = 0 ) л (po|ei= Pi) л (ро|е2= рг) а v е е Ej, d € е2: е <о d.
Не каждый процесс, как это показывает приводимый ниже пример, может быть разложен на непустые последовательные процессы.
^ ^ е
а d о
а—
^
Рис.
1.10. Процесс без нетривиа.гьного
последовательного разложения
Рис.
1.9. Разложение р в подпроцессы b **
с f
Пример (последовательное разложение процессов). Процесс р, заданный на рис. 1.8, может быть разложен, как это показано на рис. 1.9, последовательно на два процесса. Для процесса, заданного на рис. 1.10, не существует никакого нетривиального последовательного разложения. При этом рахюжение мы называем тривиальным, если один из двух подпроцессов, возникающих с помощью разложения, является пустым. и
Скажем, что процесс ро можно понимать как параллельную композицию процессов pi и Р2 с общими действиями из S с А или что процесс ро допускает разложение в параллельные процессы pi и Р2 с общими действиями из S с А, если процесс р0 получается путем параллельного выполнения процессов pi и р2, причем множество событий в точности совпадает с событиями, помеченными действиями из S. Для этого отношения между тремя процессами будем писать предикат
ispar(p0, Рь Р2, S).
Математически этот предикат определяется следующим уравнением:
ispar(p0, Рь р2, S) =d(;f (Eq = Ej и Е2) л
(Е, пЕг = (ее Е0: а0(е) е S}) л («о|П1 = «0 л («о1г:2 = а2) л
(<0 = (<1 и <,)*).
Здесь (<i и <2)* обозначает рефлексивно-транзитивное замыкание отношений <i и <2-
Частный случай параллельной композиции получается для S = 0. Тогда в возникающем процессе ро события из различных процессов р] и Р2 яатяются причинно-независимыми.
Пример (параллельное рахюжение процессов).
(1) Процесс, показанный на рис. 1.11 с помощью диаграммы действий, может быть рахтожен в два параллельных процесса, заданных на рис. 1.12, причем пусть множество общих событий помечено действиями из S = {с, е}.
Рис.
1.11. Процесс
ро
а
V
Рис. 1.12. Лараи&1ьное разложение процесса ро
(2) Два процесса, заданные на рис. 1.13, при их параллельной композиции с общими событиями, помеченными действиями из {b, d}, дают процесс, показанный на рис. 1.14.
В обоих примерах необходимо образование транзитивного замыкания. О
▼
d
f
Рис. 1.13. Процессы pj и рх
/ N
I d
\
f
Рис. 1.14. Паралле.гьная композиция из pi и Р2
g
\
дельны). Для граничного случая S = А получится процесс с множеством событий, получаемым путем объединения множеств событий (которые должны быть идентичны) обоих процессов, и с причинным порядком, которое образуется через транзитивное замыкание причинных порядков обоих процессов.
В противоположность последовательному разложению каждый нетривиальный процесс допускает нетривиальное параллельное разложение. Мы обычно заинтересованы в разложениях, при которых множество общих событий было бы возможно меньше, и тем самым независимая параллельность была бы возможно больше.