В операционной системе диспетчеризация процессов выполняется обычно несколькими планировщиками,каждый из которых имеет свою периодичность вызовов и свою определенную задачу, которую он решает.
Долговременный планировщик (планировщик заданий)определяет, какие процессы должны быть перемещены в очередь готовых процессов.
Кратковременный планировщик (планировщик процессора)– определяет, какие процессы должны быть выполнены следующими и каким процессам должен быть предоставлен процессор.
Для реализации режима разделения времени в систему может быть добавлен также планировщик откачки и подкачки процессов, определяющий, какие пользовательские процессы должны быть подкачаны в память или откачаны на диск. Схема работы системы, включающей такой планировщик, изображена на рис. 8.6.
Рис. 8.6. Добавление в систему планировщика откачки и подкачки процессов.
Особенности планировщиков и процессов.Каждый планировщик имеет свои особенности поведения, как и каждый процесс.
Кратковременный планировщиквызывается очень часто, по крайней мере не реже, чем по истечение очередного кванта времени процессора. Поэтому он должен быть очень быстрым, максимально эффективно реализованным. Понятно, что недопустимо, например, если время работы этого планировщика окажется сравнимым с размером самого кванта времени – слишком велики будут накладные расходы.
Долговременный планировщиквызывается относительно редко, так как система не столь часто принимает решения о переводе процесса в очередь готовых процессов. Поэтому он может быть сравнительно медленным, не столь эффективно реализованным.
Однако, поскольку основной задачей системы в целом остается обслуживание как можно большего числа процессов, именно долговременный планировщик определяет степень (коэффициент) мультипрограммирования– число процессов, которое обслуживает система в единицу времени.
Сами процессы также могут вести себя по-разному, с точки зрения их диспетчеризации. Процессы могут быть:
Ориентированными на ввод-вывод (I/O-bound)– процессы, которые тратят больше времени на ввод-вывод, чем на вычисления. Такие процессы обычно расходуют много коротких квантов процессорного времени. Ориентированные на использование процессора (CPU-bound)– процессы, которые тратят основное время на вычисления. Такие процессы расходуют небольшое число долговременных квантов процессорного времени.