Планировщик Windows выделяет потокам одинаковую длину?

2829
Chris Wilson

Является ли временной интервал (квант), который диспетчер ядра Windows выделяет потокам одинаковой длины для каждого потока, или он основывает размер кванта на приоритете потока, как это делает Linux?

3

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

1
harrymc

Со времен Windows NT приложения с более высоким приоритетом имеют больший объем, например, для потоков переднего плана.

Определены 32 уровня приоритета, от 0 до 31, причем приоритеты от 0 до 15 являются «обычными» приоритетами, а приоритеты с 16 по 31 - это мягкие приоритеты в реальном времени, требующие привилегий для назначения. 0 зарезервировано для операционной системы. Пользователи могут выбрать 5 из этих приоритетов для назначения работающему приложению из приложения «Диспетчер задач» или через API управления потоками. Ядро может изменять уровень приоритета потока в зависимости от его ввода-вывода и использования ЦП, а также от того, является ли он интерактивным (т.е. принимает и реагирует на ввод от людей), повышая приоритет интерактивных процессов и процессов, связанных с вводом-выводом, и снижая приоритет Процессы, связанные с процессором, для повышения отзывчивости интерактивных приложений

В Vista планировщик использует регистры счетчиков циклов в современных процессорах и может оценить, сколько циклов использует поток за такт. Таким образом, планировщик может более справедливо распределять процессорное время. После прерывания потоку разрешается работать в течение другого временного интервала, в то время как до Vista планировщик предполагал, что прерванный поток работал в течение всего своего временного интервала. (Это косвенно увеличивает приоритет сильно прерванного потока.) Vista также использует планировщик приоритетов для очереди ввода / вывода, чтобы дефрагментаторы дисков и другие подобные программы не мешали операциям переднего плана.

Источники: планирование википедии, улучшения ядра Vista .

Вторая ссылка не работает, но она по-прежнему доступна на archive.org: https://web.archive.org/web/20120323170914/http://blog.gabefrost.com/?p=25. ComFreek 9 лет назад 1
_ «Со времен Windows NT приложения с более высоким приоритетом имеют больший объем, _». Это не точно. Поток с более высоким приоритетом получает преимущество над потоками с более низким приоритетом, но он не получает более длинный квант (временной интервал) только потому, что он имеет более высокий приоритет. Вы близки, хотя, упоминая темы переднего плана. Поведение по умолчанию на клиентских (не серверных) ОС Windows заключается в том, что все потоки в процессе, которому принадлежит окно переднего плана, получают временные интервалы в 3 раза больше нормальной длины. Но приоритет это другое. Jamie Hanrahan 8 лет назад 0
Не правда. Я цитирую Microsoft: «Когда окно выводится на передний план в клиентской системе, все потоки в процессе, содержащем поток, которому принадлежит окно переднего плана, утраивают свои кванты». Это происходит, когда приоритетные задания имеют приоритет. * Квантовая единица * - это то же самое, но не количество единиц, назначенных потокам процесса, как их квант. harrymc 7 лет назад 0