Активность сетей Петри. Задача о чтении и записи
Активность сетей Петри. Задача о чтении/записи.
Причиной рассмотрения сохранения в сети Петри было распределение ресурсов в операционной системе ЭВМ. Другая задача, которая может возникнуть при распределении ресурсов вычислительной системы — тупики. Тупики служат предметом многих исследований в области вычислительной техники . Лучше всего иллюстрирует задачу простой пример. Рассмотрим систему, включающую два различных ресурса q и r и два процесса а и b. Если оба процесса нуждаются в обоих ресурсах, им необходимо будет совместно использовать ресурсы. Для выполнения этого потребуем, чтобы каждый процесс запрашивал ресурс, а затем освобождал его. Теперь предположим, что процесс, а сначала запрашивает ресурс q, затем ресурс r и, наконец, освобождает и q, и r. Процесс В работает аналогично, но сначала запрашивает r, а затем q. Сеть Петри на рис. 4.6 иллюстрирует два процесса и распределение ресурсов между ними.
Начальная маркировка помечает ресурсы q(p4) и r(р5) доступными и указывает на готовность процессов a и b. Одним выполнением этой сети является t1 t2 t3 t4 t5 t6 Другим — t4 t5 t6 t1 t2 t3 Ни одно из этих выполнений не приводит к тупику. Однако рассмотрим последовательность, которая начинается переходами t1 t4 . процесс а обладает ресурсом q и хочет получить r, процесс b обладает r и хочет получить q. Система заблокирована; никакой процесс продолжаться не может.
Тупик в сети Петри — это переход (или множество переходов), которые не могут быть запущены. В сети Петри на рис. 4.6. тупик возникает, если нельзя запустить переходы t2 и t5. Переход называется активным, если он не заблокирован (нетупиковый). Это не означает, что переход разрешен, скорее он может быть разрешенным. Переход tj сети Петри С называется потенциально запустимым в маркировке μ, если существует маркировка μ' R(C,μ), в которой tj разрешен. Переход активен в маркировке μ, если потенциально запустим во всякой маркировке из R(C, μ). Следовательно, если переход активен, то всегда возможно перевести сеть Петри из ее текущей маркировки в маркировку, в которой запуск перехода станет разрешенным.
Существуют другие, связанные с активностью понятия, которые рассматривались при изучении тупиков . Их можно разбить на категории по уровню активности и определить для сети Петри С с маркировкой μ следующим образом:
Уровень 0: Переход tj обладает активностью уровня 0, если он никогда не может быть запущен.
Уровень 1: Переход tj обладает активностью уровня 1, если он потенциально запустим, т. е. если существует такая μ, R(C,μ ), что tj разрешен в μ'.
Рекомендуемые материалы
Уровень 2: Переход tj обладает активностью уровня 2, если для всякого целого n существует последовательность запусков, в которой tj присутствует по крайней мере n раз.
Уровень 3: Переход tj обладает активностью уровня 3, если существует бесконечная последовательность запусков, в которой tj присутствует неограниченно часто.
Уровень 4: Переход tj обладает активностью уровня 4, если для всякой μ' R(C, μ) существует такая последовательность запусков σ, что tj разрешен в δ (μ, σ).
Переход, обладающий активностью уровня 0, называется пассивным. Переход, обладающий активностью уровня 4, называется активным. Сеть Петри обладает активностью уровня i, если каждый ее переход обладает активностью уровня i.
В качестве примера, иллюстрирующего уровни активности, рассмотрим сеть Петри на рис. 4.7. Переход t0 не может быть запущен никогда; он пассивен. Переход t1 можно запустить точно один раз; он обладает активностью уровня 1. Переход t2 может быть запущен произвольное число раз, но это число зависит от числа запусков перехода t3. Если мы хотим запустить t2 пять раз, мы запускаем пять раз t3, затем t1 и после этого пять раз t2. Однако, как только запустится t1 (t1 должен быть запущен до того, как будет запущен t2), число возможных запусков t2 станет фиксированным. Следовательно, t2 обладает активностью уровня 2, но не уровня 3. С другой стороны, переход t3 можно запускать бесконечное число раз, и поэтому он обладает активностью уровня 3, но не уровня 4, поскольку, как только запустится t1 , t3 больше запустить будет нельзя.
Задача активности одного перехода. Активен ли данный переход tj T?
Очевидно, что задача активности сводится к задаче активности одного перехода. Для нахождения решения задачи активности мы просто решим задачу активности одного перехода для каждого tj Т; если |Т| = т, то мы должны решить т задач активности одного перехода.
Задачу достижимости можно также свести к задаче активности. Поскольку варианты задачи достижимости эквивалентны, мы рассмотрим задачу достижимости нуля в одной позиции. Если перед нами стоят какие-либо другие задачи достижимости, их можно свести, как показано в разд. 5.2, к задаче достижимости нуля в одной позиции. Теперь, если мы хотим определить, может ли быть позиция pi нулевой в какой-либо достижимой маркировке для сети Петри С1 = (Р1, Т1, I1, O1) с начальной маркировкой μ1 то построим сеть Петри С2 = (Р2, Т2, I2, O2) с начальной маркировкой μ2, которая будет активна тогда и только тогда, когда нулевая маркировка не будет достижима из μ1.
Сеть Петри С2 строится из C1 введением двух позиций r1 и r2 и трех переходов s1 s2 и s3. Сначала модифицируем все переходы Т1, включая r1 в качестве входа и выхода. Начальная маркировка μ2 будет включать фишку в r1. Позиция r1 — это позиция «действия», пока фишка остается в r1, переходы Т1 могут запускаться. Следовательно, любая маркировка, достижимая в С1 достижима также и в позициях Р1 в С2. Определим переход S1 так, что его входом будет T1, а выход пуст. Это позволяет удалить фишку из r1, запрещая запуск всех переходов в 7 и «замораживая» маркировку Р1. (Заметим, что все переходы Т1 находятся в конфликте и не только по определению, но и по построению могут запускаться каждый раз не более чем по одному.)
Позиция r1 и переход s1 позволяют сети С1 достичь любой достижимой маркировки, затем запуском S1 заморозить сеть в этой маркировке. Далее необходимо проверить, является ли позиция рi нулевой. Введем новые позицию r2 и переход s2, имеющий в качестве входа рi а в качестве выхода r2. Если pi может когда-либо стать нулевой, то этот переход не является активным. В действительности вся сеть будет пассивной, если в этой маркировке сработает переход S1. Следовательно, если pi может быть пустой, сеть не является активной. Если рi не может быть пустой, тогда s2 всегда может быть запущен, помещая фишку в r2. В этом случае мы должны будем вернуть фишку в r1 и гарантировать, что все переходы в С2 активны. Необходима уверенность в том, что С2 активна, даже если С1 не является активной. Это обеспечивается переходом s3, который «наполняет» сеть С2 фишками, гарантируя тем самым, что, если фишка помещена в r2, каждый переход активен. Переход s3 в качестве входа имеет r2 , а в качестве выхода все позиции С2 (все pi в С1, r1 и r1). Эта конструкция иллюстрируется рис. 5.6.
Если Вам понравилась эта лекция, то понравится и эта - 10 Казахстан в условиях становления тоталитарной системы.
Далее, если маркировка μ с μ(рi) = 0 достижима в R(C1, μ1), тогда С2 также может достичь этой маркировки в позициях Р1 путем выполнения той же самой последовательности запусков переходов. Затем можно запустить s1, замораживая подмножество С1. Поскольку μ(pj) = 0, s2 запустить нельзя и С2 пассивна. Таким образом, если рi может стать нулевой — С2 неактивна.
Справедливо обратное, если С2 неактивна, тогда должна быть
достижима маркировка μ с μ(r2) = 0, из которой недостижимо состояние с фишкой в r2. (Если в r2 есть фишка, то s3 разрешен, а повторно запуская s3 достаточное число раз, можно разрешить любой (или все) переход, т. е. сеть активна.) Если r2 не имеет фишек и не может их получить, тогда маркировка pi также должна быть нулевой. Таким образом, если С2 неактивна, тогда достижима маркировка, в которой маркировка pi нулевая.
На основе этой конструкции мы доказали следующую теорему.