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