Вытесняющее и не вытесняющее ядро ​​VS упреждающее и невытесняющее планирование

Я изо всех сил пытаюсь понять разницу между упреждающим и не вытесняющим ядрами, а также упреждающим и невыгодным планированием.

Из материалов по операционным системам (девятое издание), Silberschatz, Galvin и Gagne:

вытесняющее ядро ​​ - это ядро, позволяющее удалить и заменить процесс во время его работы в режиме ядра.

Не вытесняющее ядро ​​ не позволяет вытеснять процесс, работающий в режиме ядра; процесс в режиме ядра будет выполняться до тех пор, пока он не выйдет из режима ядра, не заблокируется или добровольно не уступит управление ЦП.

При невытесняющем планировании, как только ЦП был выделен для процесса, процесс удерживает ЦП до тех пор, пока он не освободит ЦП путем завершения или переключения в состояние ожидания. - Мне кажется, что это то же самое описание ядра без вытеснения.

Упреждающее планирование происходит в двух следующих случаях (из той же книги):

  1. * Когда процесс переключается из рабочего состояния в состояние готовности (например, при возникновении прерывания)

  2. Когда процесс переходит из состояния ожидания в состояние готовности (например, при завершении ввода-вывода) *

В книге просто говорится, что в этом сценарии есть выбор, я не уверен, что он есть. Есть ли выбор, можно ли продолжить выполнение того же процесса в очереди готовности или выбрать для запуска другой процесс из очереди готовности?

По сути, я ищу четкое разъяснение этих 4 терминов.

Спасибо!


person Physco111    schedule 06.04.2018    source источник
comment
Basically, a clear clarification on these 4 terms is what I'm looking for. - В Stack Overflow есть много вопросов по этим условиям. Что именно в них непонятно? Разница между невытесняющим планированием и невытесняющим ядром заключается в том, что невытесняющее ядро ​​ допускает вытеснение процесса, пока он находится в пользовательском режиме < / b>, но невытесняющее планирование не позволяет этого.   -  person Tsyvarev    schedule 06.04.2018
comment
Купите книгу получше. То, что вы процитировали для «Упреждающего планирования» выше, представляет собой груду вводящих в заблуждение модных словечек, объединенных вместе :(   -  person Martin James    schedule 07.04.2018
comment
@MartinJames: Нет, это не модные словечки. Они являются ключевыми словами и действительно имеют значение. К сожалению, в остальном вы совершенно правы.   -  person too honest for this site    schedule 07.04.2018
comment
@Olaf без списка допустимых состояний потока и их значения (т.е. ОС). у них больше кайфа, чем ключа :)   -  person Martin James    schedule 07.04.2018
comment
@MartinJames: Мне нужны четкие определения / спецификации. У нас есть ИИ, пусть они думают, мы на фейсбуке, щебечем, чтобы сжечь разум.   -  person too honest for this site    schedule 07.04.2018


Ответы (1)


Проблема, с которой вы сталкиваетесь, заключается в том, что эти термины не имеют стандартного значения. Я подозреваю, что ваша книга использует их с точки зрения какой-то конкретной операционной системы (какой? - Je ne sais quois). Если вы искали в Интернете, вы наверняка нашли противоречивые объяснения.

Например, упреждающее планирование может означать:

  1. Планирование, которое прерывает запущенный процесс, не уступая ЦП.
  2. Планирование, которое прерывает запущенный процесс до истечения его кванта.
  3. У вашей книги, видимо, есть еще одно определение. Я не могу понять смысл отрывка. Вполне возможно, что книга просто сбивает с толку в этом вопросе (поскольку, по всей видимости, она содержит очень много пунктов). Во-первых, состояния процесса зависят от системы. Довольно сложно определить термин, использующий состояния процесса.

Эта часть определения имеет смысл:

При планировании без вытеснения, как только ЦП был выделен для процесса, процесс удерживает ЦП до тех пор, пока он не освободит ЦП путем завершения или переключения в состояние ожидания.

Упреждающая часть определения не имеет смысла.

В случае термина вытесняющее ядро ​​ это довольно стандартно, и его описание, которое вы даете, в некоторой степени нормальное. Тем не менее, утверждение в книге должно быть немного более точным, потому что каждый процесс должен быть удален в режиме ядра. Обычно можно сказать что-то вроде «В ядре без вытеснения процесс не может быть удален, если он вошел в режим ядра через исключение».

Вытесняющее ядро ​​необходимо для обработки в реальном времени.

Итак, вы спрашиваете:

  • Мне кажется, что это то же самое описание ядра без вытеснения.

У вас есть четыре теоретических комбинации:

  1. Ядро с приоритетным планированием

Операционная система может принудительно переключать процессы практически в любой момент.

  1. Ядро с приоритетным планированием с приоритетом

Такой комбинации не существует.

  1. Ядро без вытеснения по расписанию

Процесс должен явно уступить, чтобы операционная система могла переключиться на другой процесс.

  1. Ядро без вытеснения по расписанию

Операционная система может принудительно переключать процессы, кроме случаев, когда процесс выполняется в режиме ядра для обработки исключения (могут быть обстоятельства, при которых процесс не может быть переключен во время обработки прерывания).

person user3344003    schedule 06.04.2018
comment
Спасибо! Вы сказали, что 4 теоретических комбинации имеют смысл. Для второй комбинации - Ядро с вытесняющим планированием без вытеснения, этой комбинации не существует, потому что для того, чтобы иметь ядро ​​с вытеснением, ВАМ НУЖНО ИМЕТЬ право на вытесняющее планирование? Иначе в этом нет смысла. - person Physco111; 08.04.2018