За каждым системным ресурсом, который может обслуживать вызовы с ожиданием, закрепляется некая очередь. Это означает, что вызов, который поступил в систему при отсутствии ресурса, способного его обслужить, не теряется, а устанавливается на ожидание.
Традиционно вызовы, установленные в очередь, обрабатывались по принципу FIFO: “первым поступил — первым обслужен”. Однако разнообразие задач, стоящих перед СРВ в центре обслуживания вызовов, приводит к разнообразным модификациям дисциплины организации очередей с возможностью производить выбор вызовов из очереди не только в порядке их поступления, но и по сложной многокритериальной системе (например, в первую очередь обслуживать вызовы от VIP-номеров и т. п.).
Помимо дисциплины выбора вызовов из очереди и выбора операторов для их обслуживания, и сами очереди, в зависимости от структуры системы, могут быть организованы разными способами:
- индивидуальные очереди к каждому оператору;
- очередь к службе (группе операторов);
- единая очередь ко всем службам, доступным через данную СРВ.
Ядро OS-9 поддерживает 4 механизма диспетчеризации, среди них один механизм является базовым и действует автоматически, а другие механизмы вводятся программным способом с помощью системного вызова.
Цель Автоматическая (круговая) диспетчеризация заключается в распределении процессорного времени между процессами пропорционально их приоритетам. Процессы с одинаковыми приоритетами должны получать одинаковые порции квантов времени. Однако, не должно быть так, чтобы процессы с меньшим приоритетом чрезмерно долго ждали своей очереди. Это достигается путем использования механизма старения очереди активных процессов.
Диспетчеризация с блокировкой по минимальному приоритету.Этот механизм позволяет блокировать выполнение низкоприоритетных процессов, находящихся в очереди активных процессов. Для его включения посредством системного вызова программно устанавливаются значения минимального приоритета. Если значение минимального приоритета установлено, то автоматическая диспетчеризация изменяется следующим образом: если в очередь активных процессов помещается процесс с приоритетом ниже установленного минимального приоритета, то его константа диспетчеризации.
Диспетчеризация по минимальному возрасту. Этот механизм включается путем программной установки максимального возраста. Значение максимального возраста сравнивается с приоритетом процесса, включаемого в очередь активных процессов. Если приоритет процесса больше или равен этому порогу, то диспетчер вычисляет его константу диспетчеризации другим способом.
Механизм захвата управлением процесса. Этот механизм позволяет блокировать выполнение всех процессов в очереди активных процессов, за исключением одного, ID которого указан в специальном системном вызове. Когда процесс с этим ID помещается в очередь активных процессов, ему единственному присваивается константа диспетчеризации, равная 88888888h.