ВУЗ:
Составители:
Рубрика:
Рис.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
- …
- следующая ›
- последняя »
