Планирование на основе квантования и абсолютных динамических приоритетов
Существует 4 приоритетных класса:
- критический (time critical) – потоки, выполняющие задачи управления сетью и тд
- серверный (server) – обслуживают серверные приложения
- стандартный (regular) – обслуживают пользовательские программы
- о статочны й (idle) – экранная заставка, например.
В каждом классе – 32 приоритетных уровня.
· Поток из менее приоритетного класса не может быть выбран, пока есть поток более приоритетного класса.
· Внутри класса потоки выбираются по приоритетам.
· Потоки с одинаковым приоритетом – в циклическом порядке.
Планировщик динамически меняет приоритеты потоков, если
· Поток ожидает больше, чем прописано в специальной переменной. (Его приоритет повышается, но не выше чем нижняя граница диапазона критического класса)
· Поток ушел на ввод-вывод. Когда вернется – у него будет максимальный для своего класса приоритет
· Поток поступил на выполнение
Величина кванта времени здесь тоже динамическая (зависит от загрузки системы и интенсивности подкачки) – от 32 мс до 65536 мс. Если поток был прерван до истечения кванта, то в след раз квант увеличится на 1 таймер (около 32 мс), и так пока не достигнет предела, прописанного в текущих настройках системы.