Диспетчер процессов — модуль операционной системы, занимающийся решением задачи диспетчеризации, то есть изменением состояния процессов при наступлении определенных событий в соответствии с заданными правилами.
Для того чтобы управление процессами было возможным, каждому процессу присваивается индивидуальный номер — идентификатор процесса. Вся информация, характеризующая процесс, помещается в специально отведенной области памяти, называемой блоком управления процессом (PCB, Process Control Block), рис. 1.
Рис. 1.  
В состав PCB входят следующие данные:
Для каждого процесса формируется свой PCB (этим занимается операционная система), все PCB размещаются в памяти в виде таблицы (рис. 2).
Рис. 2.  
Таким образом, зная местоположение таблицы PCB (адрес первого блока), операционная система может получить доступ к информации о любом процессе. Каждый процесс определяется своим блоком PCB.
Диспетчер процессов представляет собой программу (процесс), входящую в состав операционной системы. В распоряжении диспетчера имеется информация обо всех процессах, существующих в системе в данный момент (рис. 3).
Рис. 3.  
Список процессов, находящихся в состоянии готовности, содержит перечень идентификаторов процессов, ожидающих выполнения на процессоре и имеющих в своем распоряжении все необходимые ресурсы для этого.
Список заблокированных процессов содержит идентификаторы процессов, ожидающих выделения им какого-либо ресурса.
Список событий содержит информацию о событиях, которые связаны с занятием или освобождением ресурсов в системе. Наступление таких событий может повлиять на переход процесса из состояния блокировки в состояние готовности. Примером такого события может служить получение сигнала готовности от ведомого устройства в случае асинхронного обмена.
Диспетчер активизируется таймером через заданные промежутки времени (рис. 4).
Рис. 4.  
При каждой активизации диспетчер выполняет следующие действия:
  1. Перевод процессов из состояния блокировки в состояние готовности. Диспетчер анализирует список событий и определяет, какой из процессов можно перевести из состояния блокировки в состояние готовности в соответствии с каждым событием. Каждое событие связано с освобождением или занятием некоторого ресурса и при его наступлении процесс, ожидающий предоставления этого ресурса, может быть переведен в состояние готовности, если необходимый ему ресурс освободился. Если несколько процессов находятся в ожидании одного и того же ресурса, применяется схема приоритетов, позволяющая выбрать из конкурирующих процессов процесс с наивысшим приоритетом и перевести в состояние готовности именно его. Например, если один из заблокированных процессов ожидает сигнала готовности от ведомого устройства (случай асинхронного обмена), при обнаружении события поступления этого сигнала в списке событий диспетчер переводит этот процесс в состояние готовности. Перевод в состояние готовности заключается в то, что:
    • Изменяется состояние процесса в PCB этого процесса (с L на R).
    • Идентификатор этого процесса изымается из списка заблокированных процессов и помещается в список процессов, находящихся в состоянии готовности.
  2. Перевод процессов из состояния готовности в активное состояние. Для всех процессов, находящихся в состоянии готовности, определяется приоритет. Процесс с максимальным приоритетом переводится в активное состояние (начинает выполняться на процессоре). Процесс, бывший до этого активным, переводится в состояние готовности и помещается в список готовых процессов. Определение приоритетов процессов происходит в соответствии с одной из типовых схем, например наибольший приоритет получает процесс, дольше всего находившийся в состоянии готовности (дольше всего не исполнявшийся) или использовавший суммарно наименьшее количество процессорного времени. Перевод процесса в активное состояние заключатся в следующем:
    • Изменяется состояние процесса в PCB этого процесса (с R на A).
    • Идентификатор этого процесса изымается из списка процессов, находящихся в состоянии готовности.
Такие действия диспетчера получили названия планирования процессов. Так как диспетчер вызывается с интервалом , с таким же интервалом происходит перепланирование процессов. Следовательно, каждому процессу отводится интервал времени для выполнения, после чего он переводится в состояние готовности, а активным становится другой процесс. Интервал часто называют квантом процессора. Величина кванта процессора определяется аппаратными настройками вычислительной системы (таймера). Как правило, она составляет несколько десятых долей секунды.