Рис. 10. Пример системы субъектов с точками ветвления
операторы установки и ожидания находятся на одной цепочке вы-
полнения. Данный пример показывает, что необходимо таким образом
использовать средства синхронизации, чтобы при любом варианте раз-
вития системы избегать ситуаций взаимной блокировки.
Правило 4.
Если стратегия избегания ситуаций взаимной блоки-
ровки в системе строится, опираясь на значения счетчика некоторой
сигнальной переменной с памятью, то необходимо анализировать си-
стему на наличие потенциальных ситуаций взаимной блокировки при
добавлении любого оператора, связанного с данной переменной (не
обязательно только оператора ожидания).
Пример на рис. 7 представляет собой систему, зависящую от кон-
кретных значений счетчиков первой и второй сигнальных перемен-
ных. Если оба значения в начале равны нулю, то система не допускает
ситуаций взаимной блокировки. Однако, как показывает пример, при
добавлении в систему оператора установки данная система уже до-
пускает ситуации взаимной блокировки.
В случае, когда стратегия избегания ситуаций взаимной блоки-
ровки основана на подборе конкретных значений для счетчиков сиг-
нальных переменных, необходимо подвергать систему анализу и при
добавлении новых операторов установки, поскольку они нарушают
динамику изменения значений счетчиков.
Правило 5.
Для разделения состояний эффективнее всего исполь-
зовать дополнительные исключающие семафоры и разделения состо-
яний вдоль субъекта.
При обеспечении упорядоченности часто возникает потребность в
том, чтобы некоторые соотношения не выполнялись в одном состоя-
нии. Примером на рис. 8 показано, как этого добиться с помощью до-
бавления дополнительного исключающего семафора. Пример на рис. 9
предлагает альтернативный подход — разделение состояний вдоль од-
ного субъекта.
110
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012