Организация управления задачами в многозадачном режиме.

 

Реализация многозадачного режима с приоритетным обслуживанием подразумевает разделение процессорного времени между всеми задачами, выполняемыми компьютером. Выделение времени прикладной программе осуществляется средствами операционной системы, что гарантирует работу всех приложений вне зависимости от наличия ошибок в других приложениях. Реализованный в Windows механизм многозадачности по сути является псевдомногозадачным, так как передача управления ОС для вызова другой прикладной программы осуществляется из текущей выполняемой. Задача — это элемент работы, который процессор может исполнять, запустить или отложить. Задача определяется селектором своего сегмента TSS. Когда задача выполняется, ее селектор TSS (вместе с дескриптором в скрытой части) загружен в регистр TR процессора. Запуск задачи осуществляется при помощи команды CALL или JMP на сегмент TSS или на шлюз задачи, а также при запуске обработчика прерывания или исключения, который описан как шлюз задачи. При этом автоматически осуществляется переключение задач. Состояние текущей задачи записывается в ее TSS, состояние вызываемой задачи считывается из ее TSS, и управление передается на новые CS:EIP. Если задача не была запущена командой JMP, селектор сегмента TSS старой задачи сохраняется в TSS новой и устанавливается флаг NT, так что следующая команда IRET выполнит обратное переключение задач.