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

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

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

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

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

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

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

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

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

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

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

Спасибо!

1 ответ

Решение

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

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

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

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

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

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

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

Превентивное ядро ​​необходимо для обработки в реальном времени.

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

  • Мне кажется, что это точно такое же описание недопустимого ядра.

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

  1. Упреждающее планирование Упреждающее ядро

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

  1. Непередающее планирование Планирующее ядро

Эта комбинация не существует.

  1. Непримитивное планирование Непредопределяющее ядро

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

  1. Вытесняющее планирование Непрерывное ядро

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

Другие вопросы по тегам