ВУЗ:
Составители:
Рубрика:
Изменение в процедуре «Ждать»:
If not Текущий процесс^. состояние then Текущий процесс^. сигнал := false;
2-й случай:
Допустим, что в процессе работы диспетчера допускается прерывание. Такая ситуа-
ция имеет место в системах реального времени. Рассмотрим случай, когда прерывание про-
изошло.
Допустим, что в результате прерывания программа обработки прерывания хочет
вновь активизировать текущий процесс и устанавливает переменной “состояние” и “сигнал”
true.
Однако после выхода из программы обработки прерываний оператор Текущий
процесс^. сигнал := false сбросит значение сигнал и в результате мы получим запретное со-
стояние процесса.
Чтобы это исключить, изменим порядок анализа переменных и присваивания:
Рис.3
Та же ситуация, но запрещённого состояния не получим.
Тек
ущ
ий п
р
о
ц
есс^. сигнал
Тек
ущ
ий п
р
о
ц
есс^. состо
я
-
Тек
ущ
ий п
р
о
ц
есс^. сигнал
truefalse
Изменение в процедуре «Ждать»:
If not Текущий процесс^. состояние then Текущий процесс^. сигнал := false;
2-й случай:
Допустим, что в процессе работы диспетчера допускается прерывание. Такая ситуа-
ция имеет место в системах реального времени. Рассмотрим случай, когда прерывание про-
изошло.
Допустим, что в результате прерывания программа обработки прерывания хочет
вновь активизировать текущий процесс и устанавливает переменной “состояние” и “сигнал”
true.
Однако после выхода из программы обработки прерываний оператор Текущий
процесс^. сигнал := false сбросит значение сигнал и в результате мы получим запретное со-
стояние процесса.
Чтобы это исключить, изменим порядок анализа переменных и присваивания:
Текущий процесс^. сигнал
Текущий процесс^. состоя-
false true
Текущий процесс^. сигнал
Рис.3
Та же ситуация, но запрещённого состояния не получим.
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »
