Операционная система вставляет после каждого отрезка времени / кванта?

1003
Celeritas

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

0

2 ответа на вопрос

1
psusi

Not necessarily. Typically the scheduler will lower the dynamic priority of a task after its quantum expires, but if it is still the highest priority task, then it gets another. In general though, yes, when the task has run long enough, the OS takes over and switches to another. Why should that be inefficient?

Потому что (поправьте меня, я ошибаюсь), большинство задач занимают несколько оборотов в процессоре, так что это `x` раз, когда ОС необходимо выполнить какой-то расчет для каждой задачи, а это много. Например, есть 5 задач, и в среднем для каждой требуется 4 временных отрезка, то есть примерно в 4 раза больше, чем вмешивается ОС. Я могу ошибаться, я думаю, это именно то, как я себе это представлял. Celeritas 10 лет назад 0
@Celeritas, только одна задача может быть запущена на данном процессоре, и время, необходимое для настройки приоритета задачи и проверки, является ли очень высокий приоритет очень маленьким (например, в 10 000 или 100 000 раз меньше) по сравнению с длина кванта. psusi 10 лет назад 1
Правильно, если квант смехотворно короток, то что-то может начать быть менее эффективным из-за того, что все делятся задачами и проверяют свои приоритеты? Celeritas 10 лет назад 0
@Celeritas, там нет никакого обмена, и кванты не смехотворно короткие;) psusi 10 лет назад 0
0
Wandering Logic

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

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

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

что такое блокирующий вызов? Celeritas 10 лет назад 0
Планировщик не вызывается после обслуживания каждого прерывания; это было бы слишком много накладных расходов. Также нет никаких предположений о времени между блокировкой вызовов; планировщик просто делает быструю проверку, чтобы увидеть, истек ли квант при каждом прерывании таймера. psusi 10 лет назад 0
@Celeritas, блокировка означает, что задача переходит в спящий режим, ожидая чего-то, например, дискового ввода-вывода, что позволяет вместо этого запускать другие задачи. psusi 10 лет назад 0
@psusi так в чем же разница между сном и блокированием? Или нет такого слова, как сон и люди говорят «блокирование»? Celeritas 10 лет назад 0
@Celeritas, sleep - это состояние, в котором находится задача, а блокировка - это то, что делает системный вызов, когда она переводит задачу в спящий режим. psusi 10 лет назад 0

Похожие вопросы