В контексте планирования процессов, вмешивается ли операционная система после каждого временного отрезка / кванта? Например, если компьютер простаивал и приходили 4 задачи: t1, t2, t3 и t4, и они планировались с использованием функции «первым пришел - первым обслужен», мы обычно считаем, что t1, t2, t3, t4 находятся в ЦП, но это не упрощение? Потому что это мы t1, OS, t2, OS, t3 OS t4, что на самом деле произойдет? Если это правда, ОС вмешивается после каждого временного среза (иначе кванта), разве это не очень неэффективно?

2 ответа2

1

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .