ВУЗ:
Составители:
Рубрика:
Рис.1
Чтобы примитивы – готов, ждать и выбор- можно было использовать для управления
процессами с тремя состояниями в них нужно добавить операторы, изменяющие значение
поля “сигнал” в дескрипторе.
Эти изменения сводятся к добавлению оператора в процедуры «Готов» и «Выбор» и
несколько сложнее в процедуре «ждать».
Условимся, что если текущий процесс хочет приостановиться с сохранением состоя-
ния готовности, то он должен вначале вызвать процедуру «Готов», а затем процедуру
«Ждать».
Так как переменные, определяющие состояние процесса имеют разные значения, в за-
висимости от того предшествовала ли выполнению процедуры «Готов» процедура «Ждать»,
то процедура «Ждать» по этим значениям может определить, нужно ли переводить процесс в
состояние ожидания.
Реализация выявления состояния процесса в процедуре «Ждать»
1-й случай:
Диспетчер работает с маскированием прерывания.
Рис.2
состояние = false
сигнал = true
ждать
состояние = true
сигнал = true
готов
ждать
Тек
ущ
ий п
р
о
ц
есс^. состо
я
-
Тек
ущ
ий п
р
о
ц
есс^. сигнал
true
false
состояние = true
сигнал = true
состояние = false
сигнал = true
состояние = false
сигнал = false
ждать
готов выбор
активность ожидание
готовность
ждать состояние = false состояние = false сигнал = false сигнал = true ожидание активность готов выбор состояние = true сигнал = true готовность Рис.1 Чтобы примитивы – готов, ждать и выбор- можно было использовать для управления процессами с тремя состояниями в них нужно добавить операторы, изменяющие значение поля “сигнал” в дескрипторе. Эти изменения сводятся к добавлению оператора в процедуры «Готов» и «Выбор» и несколько сложнее в процедуре «ждать». Условимся, что если текущий процесс хочет приостановиться с сохранением состоя- ния готовности, то он должен вначале вызвать процедуру «Готов», а затем процедуру «Ждать». Так как переменные, определяющие состояние процесса имеют разные значения, в за- висимости от того предшествовала ли выполнению процедуры «Готов» процедура «Ждать», то процедура «Ждать» по этим значениям может определить, нужно ли переводить процесс в состояние ожидания. состояние = false ждать сигнал = true готов состояние = true ждать сигнал = true Реализация выявления состояния процесса в процедуре «Ждать» 1-й случай: Диспетчер работает с маскированием прерывания. Текущий процесс^. состоя- true false Текущий процесс^. сигнал Рис.2
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »