Главная > Разное > Теория сетей Петри и моделирование систем
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

8.5. Системы передачи сообщений

Использование Р- и V-операций для организации взаимодействий процессов в системе может осуществляться до тех пор, пока нет лучшего механизма связи. Одним из предложений по улучшению

Рис. 8.7. P/V-система процессов для двух узлов графа вычислений на рис. 8.2.

Рис. 8.8. Добавление P/V-систем в иерархию моделей.

этого механизма является предложение использовать сообщения. Система с сообщениями — это набор процессов, которые взаимодействуют с помощью сообщений. Над сообщениями возможны две операции: послать и получить. Передача сообщения подобна V-операции, а прием сообщения подобен -операции. Если при выполнении операции получить нет ни одного сообщения, то получатель ждет до тех пор, пока сообщение не будет послано.

На этом механизме основана схема моделирования, предложенная Риддлом [258]. Эта модель кажется наиболее подходящей для моделирования протоколов в сетях ЭВМ. Риддл рассматривает (конечное) множество процессов, которые взаимодействуют с помощью сообщений. Сообщения посылаются и запрашиваются специальными процессами, называемыми канальными процессами (почтовые ящики). Канальные процессы предоставляют, что существенно, комплект сообщений, которые посланы, но еще не приняты, или комплект запросов на сообщения от приемников, которые выданы, но еще не удовлетворены. Другие процессы системы называются программными процессами и описываются на языке моделирования программных процессов (ЯМПП).

Пример системы из трех процессов приведен на рис. 8.9. Как видно из примера, описание процессов на ЯМПП является, по существу, схемой. Интерес представляет только деятельность по передаче сообщений в системе. Сообщения являются абстрактными элементами, единственной характеристикой которых является тип. Число типов сообщений в системе может быть только конечным. Сообщения посылаются из или принимаются в буфер сообщений в каждом из процессов. Существует только по одному буферу на процесс. Предложениями ЯМПП являются: Поместить сообщение типа в буфер сообщений. Послать сообщение в буфер сообщений канального процесса Запросить сообщение из канального процесса Ждать (если необходимо) до тех пор, пока не будет получено сообщение. Сообщение помещается в буфер сообщений. Проверить тип сообщения в буфере сообщений и перейти к предложению если сообщение имеет тип, отличный от : Моделировать внутреннюю, зависящую от данных, проверку. Либо продолжать обработку, выполняя следующее предложение, либо перейти к предложению с меткой Передать управление предложению Завершить процесс.

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

Для моделирования процесса сетью Петри используем по одной фишке на процесс в качестве программного счетчика. Присутствие сообщения в канальном процессе также представляется фишкой. Поскольку сообщения идентифицируются типом, то необходимо моделировать каждый тип сообщений в канальном процессе отдельной позицией. Очень важным свойством систем с ЯМПП является то, что число сообщений конечно. Каждый программный процесс также конечен. Только очередь сообщений занимает потенциально неограниченный объем памяти. Таким образом, способность моделировать канальные процессы и правильно представлять предложения send и receive являются наиболее важными аспектами преобразования описания на ЯМПП в сеть Петри. Моделируя

(кликните для просмотра скана)

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

Единственным символом в выражении передачи сообщений является тип сообщений для тех сообщений, которые посылаются к или принимаются от канального процесса. Поскольку каждый переход в сети Петри приводит к появлению символа в языке сети Петри для этой сети Петри, то только предложения send и receive в системе с ЯМПП могут быть промоделированы. Таким образом, существуют два вида позиций в сети Петри. Один вид позиций, помеченных действует как счетчик числа сообщений типа в канальном процессе Другой вид позиций представляет предложения send и receive программы ЯМПП. Пусть эти предложения однозначно помечены Мы пометим позицию, представляющую предложение с сообщением типа в буфере сообщений, символом Фишка в позиции, ассоциированной с предложением означает, что предложение уже выполнено. Рис. 8.10 иллюстрирует, как предложения должны моделироваться сетью Петри. На рис. 8.10 позиция представляет позицию, ассоциированную с каким-либо предложением, которое предшествует предложению

Теперь осталось показать, что существует возможность определения предложения, предшествующего другим предложениям в программе на ЯМПП. Отметим, что каждое предложение можно рассматривать как пару, состоящую из типа сообщения и номера предложения, поскольку одно и то же предложение с различными типами сообщений в буфере сообщений будет моделироваться сетью Петри различным образом. Наиболее очевидный способ определения предшественников предложения состоит в запуске в начале каждой программы на ЯМПП специального стартового предложения (которое становится стартовой позицией) и в порождении согласно описанию программ всех возможных последующих предложений send и receive с соответствующим им содержимым буфера сообщений. Этот процесс повторяется для всех появляющихся предложений до тех пор, пока все предложения send и receive не будут порождены, а их последователи не будут идентифицированы. Поскольку число предложений в описании на ЯМПП и число типов сообщений конечно, то порождается только конечное число пар предложение! /тип, сообщение. Эта процедура подобна характеристическим уравнениям, используемым Риддлом [258] для построения выражения передачи сообщений. На рис. 8.11 перечисляются предложения

Рис. 8.10. (см. скан) Преобразование предложений send и receive в переходы сети Петри. вверху — модель предложения sk:send с сообщением типа в буфере сообщений. Канальный процесс внизу — модель предложения sk:receive из канального процесса Возможные типы сообщений в

и их возможные последователи для системы с ЯМПП, изображенной на рис. 8.9.

После того как последователи предложения определены, мы можем, используя эту информацию, идентифицировать возможные предшественники предложения и, следовательно, построить сеть Петри, эквивалентную системе с ЯМПП, используя переходы, подобные приведенным на рис. 8.10. Специальная стартовая позиция является предшественником первого предложения каждого процесса системы. На рис. 8.12 система с ЯМПП, изображенная на рис. 8.9, преобразована в эквивалентную сеть Петри.

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

Поскольку P/V-системы можно моделировать системами передачи сообщений с сообщениями только одного типа, то P/V-системы

Рис. 8.11. (см. скан) Предложения и последователи для системы с ЯМПП, изображенной на рис. 8.9.

включаются в системы передачи сообщений. Легко построить систему с сообщениями для решения задачи о курильщиках сигарет, поэтому включение P/V-систем в системы с сообщениями является собственным. С другой стороны, системы с сообщениями не способны воспринимать входные сообщения от нескольких источников одновременно и поэтому не эквивалентны сетям Петри.

При попытке моделирования перехода с несколькими входами может возникнуть один из следующих двух случаев:

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

2. Процесс будет уклоняться от создания лишних тупиков, определяя, что оставшиеся нужные фишки отсутствуют, и возвращая

(кликните для просмотра скана)

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

Рис. 8.13. Добавление систем с сообщениями к иерархии моделей.

Риддл [259] представил преобразование, которое подпадает под случай 1 и приводит к лишним тупикам. В любом случае мы видим, что системы с сообщениями не могут моделировать произвольные сети Петри (при сформулированных нами ограничениях). Поэтому в результате мы получаем иерархию, приведенную на рис. 8.13.

<< Предыдущий параграф Следующий параграф >>
Оглавление