Кто планирует планировщик в ОС - разве это не сценарий курицы и яйца?

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

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

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

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


person aks    schedule 12.02.2010    source источник
comment
На самом деле нет универсального ответа. Вам нужно будет посмотреть на конкретную реализацию ОС. Однако ответ @Ira, вероятно, применим к большинству ОС.   -  person Benoit    schedule 29.04.2010


Ответы (2)


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

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

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

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

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

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

person Ira Baxter    schedule 12.02.2010
comment
Согласен: планировщик — это не задача, это процедура, которая вызывается в «точках планирования». - person Clifford; 12.02.2010
comment
Раньше я использовал прерывание аппаратного таймера в качестве основного источника для запуска функции планировщика. Функция планировщика отвечает за все детали переключения задач, такие как переключение контекста и настройка приоритета. Но теперь я обнаружил, что это будет означать, что время переключения задач предсказуемо. Ответ Иры очень хороший. - person smwikipedia; 26.02.2010

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

person R. Marcos    schedule 28.02.2018
comment
Я не уверен, действительно ли это добавляет к вопросу ... уже есть ответ, в котором упоминаются прерывания, и вопрос относится к 2010 году. - person Thomas Flinkow; 28.02.2018