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