Задача о чтении/записи
Существует несколько вариантов задачи о чтении/записи, однако основная структура их остается неизменной. Имеются процессы двух типов: процессы чтения и процессы записи. Все процессы совместно используют общий файл или переменную или элемент данных. Процессы чтения не изменяют объект в отличие от процессов записи. Таким образом, процессы записи должны взаимно исключать все другие процессы чтения и записи, в то время как несколько процессов чтения могут иметь доступ к разделяемым данным одновременно. Задача состоит в определении структуры управления, которая не приведет к тупику и не допустит нарушения критерия взаимного исключения.
На рис. 2.18 иллюстрируется решение задачи в том случае, когда количество процессов чтения ограничено величиной n. Если в системе количество процессов чтения не ограничено, то только n процессов могут выполняться в одно и то же время.
Проблема возникает в том случае, если количество процессов чтения не ограничено и мы хотим предоставить возможность неограниченному количеству процессов читать одновременно. В этом случае можно утверждать, что возникает необходимость хранения количества читающих процессов. При инициализации каждого процесса чтения в счетчик добавляется единица, а по окончании процесса единица вычитается. Это легко моделируется позицией, в которой количество фишек равно количеству процессов чтения. Однако, для того, чтобы предоставить процессу записи возможность приступить к записи, необходимо, чтобы счетчик был нулевым, т.е. соответствующая позиция была бы пустой. В сетях Петри нет механизма, который бы осуществлял проверку на нуль неограниченной позиции. Таким образом, оказывается, что задача о чтении/записи с неограниченным числом процессов чтения не может быть решена с помощью сетей Петри..
Рис. 2.17. Задача об обедающих мудрецах Рис. 2.18. Задача о чтении/записи
Химические системы
Химические системы – другой пример систем, которые могут быть промоделированы сетями Петри. Химические уравнения моделируются переходами; вещества, участвующие в реакции, – позициями. Количество фишек в позиции указывает на количество данного вещества в системе. Например, сеть |Петри на рис. 2.20 представляет окислительно-восстановительную реакцию между щавелевой кислотой и пероксидом водорода, в результате которой получаются вода и диоксид углерода. Т.е. она представляет два химических уравнения:
Н2С2О4 → 2СО2 + 2Н+ + 2е–. 2е– + 2Н+ + Н2О2 → 2Н2О.
Можно представить и реакции катализа. Соединение водорода и этилена образует этан (Н2 + С2Н4 → С2Н6) только в присутствии платины. Это также отражено на рис. 2.20.
Рис. 2.19. Операции над семафором Рис. 2.20. Модели химических реакций
Упражнения
1. Построить сеть Петри для организации работы билетной кассы с 3 кассирами и общей базой данных.
2. Построить сеть Петри для задачи: n писателей, m покупателей и ограниченным объемом полок в магазине (k книг).
3. Построить сеть Петри для организации работы магазина с 3 продавцами, 1 весами и 1 кассой (продавец ждет покупателя, берет товар, взвешивает, упаковывает, рассчитывает).
4. Построить сеть Петри для организации работы зала по бронированию билетов с 6 автоматами (можно посмотреть наличие места или забронировать).
5. Построить сеть Петри для организации работы камеры хранения из n ячеек (пассажир приходит, сдает багаж (если есть свободные места), уходит, возвращается и забирает багаж).
6. Построить сеть Петри для задачи: в потоке 65 студентов, занятия ведут 7 преподавателей, преподаватели размещают в локальной сети информацию о консультациях, студенты могут просматривать ее в терминальном классе с 8 компьютерами.
7. Построить сеть Петри для задачи: в мастерской срочного ремонта обуви 3 мастера, клиенты приходят и сдают обувь, причем количество мест для хранения ограничено, после ремонта обувь помещается обратно на полки, откуда ее забирают.
8. Построить сеть Петри для представления химических реакций:
а) углерод при окислении кислородом в избытке воздуха превращается в углекислый газ: C + O2 = CO2 ; б) углерод при окислении кислородом при недостатке воздуха превращается в угарный газ: 2C + O2 = CO2 ; в) при нагревании углерода в углекислом газе получаем угарный газ: C + CO2 = 2CO; г) на воздухе угарный газ горит синим пламенем: 2CO+ O2 = 2CO2.
АНАЛИЗ СЕТЕЙ ПЕТРИ
Дата добавления: 2016-04-11; просмотров: 1522;