Выполнение задач процессором осуществляется в соответствии с планом и в порядке, определяемыми операционной системой. Однако, когда операционная система решает начать выполнение новой задачи, она направляет процессор на выполнение ядра операции смены задачи, иногда называемого сменой контекста.
При переключении задач процессор осуществляет следующие действия:
1)Выполняется команда JMP или CALL, селектор которой указывает на дескриптор сегмента типа TSS.
2)В TSS текущей задачи сохраняются значения регистров процессора. На текущий сегмент TSS указывает регистр процессора TR, содержащий селектор сегмента.
3)В TR загружается селектор сегмента TSS задачи, на которую переключается процессор.
4)Из нового TSS в регистр LDTR переносится значение селектора таблицы LDT в таблице GDT задачи.
5)Восстанавливаются значения регистров процессора (из соответствующих полей нового сегмента TSS).
6)В поле обратной связи заносится селектор сегмента TSS снимаемой с выполнения задачи для организации возврата к прерванной задаче в будущем.
Таблица дискрипторов прерываний а арх. IA32. Обработка прерываний.
Получив номер прерывания или особой ситуации, МП использует его как индекс в таблице дескрипторов прерываний (IDT). IDT может быть расположена в любом месте памяти; операционная система инициализирует IDТ и загружает ее адрес в регистр таблицы дескрипторов прерываний (IDTR). IDT представляет собой массив шлюзов (один шлюз для каждого обработчика прерывания и особой ситуации), через которые происходит передача управления обработчику (рис. 5.1). Обработчик прерываний или особых ситуаций может быть реализован в виде процедуры или задачи. Номер прерывания аппаратно умножается на 8 (в соответствии в размером дескриптора в таблице IDT). Полученное значение определяет в таблице положение шлюза, через который осуществляется передача управления обработчику прерывания.