Управление ветвями
VMM использует два компонента для воплощения упреждающей многозадачности между ветвями и виртуальными машинами.
- основной планировщик
- разделитель машинного времени или вторичный планировщик
Задача основного планировщика - выбор ветви с наибольшим приоритетом, которую нужно выполнить. Этот выбор происходит, пока VMM обслуживает прерывание (такое как прерывание таймера). Результат определяет какая ветвь/виртуальная машина получит контроль, когда VMM прекратит обработку прерывания. Основной планировщик работает по правилу "все или ничего". Либо ветвь будет запущена, либо нет. Выбирается только одна ветвь. VMM и другие VxD могут повышать/понижать приоритет выполнения ветвей, VMM повысит приоритет обработчика прерывания, чтобы у него был шанс выполнить свою задачу в максимально короткий срок.
Вторичный планировщик использует сервисы основного планировщика, чтобы резервировать время CPU для ветвей, которые разделяют высочайший приоритет выполнения, путем выделения каждой ветви кванта машинного времени (time-slice). Когда ветвь выполняется, пока ее time-slice не истек, вторичный планировщик повышает приоритет выполнения следующей ветви, чтобы она была выбрана основным планировщиком для запуска.
Вы можете получить больше информации по этой теме из "Системного программирования для Windows 95" Вальтера Они (Walter Oney's Systems Programming for Windows 95) и документации по Windows 95 DDK.
[C] Iczelion, пер. Aquila.