Я изо всех сил пытаюсь понять разницу между упреждающим и не вытесняющим ядрами, а также упреждающим и невыгодным планированием.
Из материалов по операционным системам (девятое издание), Silberschatz, Galvin и Gagne:
вытесняющее ядро - это ядро, позволяющее удалить и заменить процесс во время его работы в режиме ядра.
Не вытесняющее ядро не позволяет вытеснять процесс, работающий в режиме ядра; процесс в режиме ядра будет выполняться до тех пор, пока он не выйдет из режима ядра, не заблокируется или добровольно не уступит управление ЦП.
При невытесняющем планировании, как только ЦП был выделен для процесса, процесс удерживает ЦП до тех пор, пока он не освободит ЦП путем завершения или переключения в состояние ожидания. - Мне кажется, что это то же самое описание ядра без вытеснения.
Упреждающее планирование происходит в двух следующих случаях (из той же книги):
* Когда процесс переключается из рабочего состояния в состояние готовности (например, при возникновении прерывания)
Когда процесс переходит из состояния ожидания в состояние готовности (например, при завершении ввода-вывода) *
В книге просто говорится, что в этом сценарии есть выбор, я не уверен, что он есть. Есть ли выбор, можно ли продолжить выполнение того же процесса в очереди готовности или выбрать для запуска другой процесс из очереди готовности?
По сути, я ищу четкое разъяснение этих 4 терминов.
Спасибо!
Basically, a clear clarification on these 4 terms is what I'm looking for.
- В Stack Overflow есть много вопросов по этим условиям. Что именно в них непонятно? Разница между невытесняющим планированием и невытесняющим ядром заключается в том, что невытесняющее ядро допускает вытеснение процесса, пока он находится в пользовательском режиме < / b>, но невытесняющее планирование не позволяет этого. - person Tsyvarev   schedule 06.04.2018