Кто планирует планировщик в ОС - Разве это не сценарий курицы и яйца? - PullRequest
12 голосов
/ 12 февраля 2010

Кто планирует планировщик?

Какая первая задача создана и как эта первая задача создается? Не требуется ли для этого какой-либо ресурс или память? не похоже на сценарий с курицей и яйцом?

Разве планировщик не является задачей? Получает ли он ЦП в конце каждого временного интервала, чтобы проверить, какая задача должна быть предоставлена ​​ЦП?

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

Ответы [ 2 ]

14 голосов
/ 12 февраля 2010

Планировщик запланирован на

  • (внешнее) событие, такое как прерывание (диск завершен, щелчок мыши, отметка времени)
  • или внутреннее событие (такое как завершение потока, сигнализация потоком о том, что ему нужно чего-то ждать, или сигнализация потока, что он освободил ресурс, или прерывание, вызванное выполнением потока что-то нелегальное, например деление на ноль)

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

Как правило, это «планирование» планировщика вызвано кодом, связанным с аппаратным прерыванием, или кодом, связанным с системным вызовом.

Хотя вы можете думать о планировщике как о реальном потоке, на практике его не нужно реализовывать таким образом ... потому что он выполняется с более высоким приоритетом, чем любая другая задача. Сложные ОС фактически могут выделить специальный поток, который является планировщиком, и пометить его как занятый, когда планировщик получает управление. Это делает это красиво, но фиктивный поток не запланирован планировщиком

У одного может быть несколько планировщиков: один с наивысшим приоритетом (например, тот, который мы только что описали) и другие планировщики, которые действительно являются потоками и выполняются как другие пользовательские задачи. Такие планировщики с более низким приоритетом, как правило, используются для управления действиями, которые происходят с гораздо более длительными интервалами, такими как фоновые задания.

0 голосов
/ 28 февраля 2018

это обычно вызывается периодически синхронизируемым прерыванием ЦП

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...