Информация о состоянии процессора, необходимая для восстановления контекста задачи, хранится в типе сегмента, называемом сегментом состояния задачи, или TSS. На Рисунке 7-1 показан формат TSS для задачи, выполняемой центральным процессором i486 (совместимость с задачами 80286 обеспечивается другим типом TSS: см. Главу 21). Поля TSS делятся на две основные категории:
Динамические поля, обновляемые процессором при каждом переключении задачи. В число этих полей входят:
Регистры общего назначения (EAX, ECX, EDX, EBX, ESP,EBP, ESI и EDI).
Сегментные регистры (ES, CS, SS, DS, FS и GS).
Регистр флагов (EFLAGS).
Указатель команд (EIP),
Селектор для TSS предыдущей задачи (обновляется только когда ожидается возврат).
Статические поля, которые процессор считывает, но не изменяет. Эти поля устанавливаются при создании задачи. Эти поля:
Селектор для LDT задачи.
Логический адрес для стеков привилегированных уровней 0, 1 и 2.
Бит T (бит отладочной ловушки), который, будучи установленным, заставляет процессор устанавливать при переключении задачи отладочное исключение. (Более подробную информацию об отладке см. в Главе 11).
Базовый адрес битового массива разрешения ввода/вывода. При наличии, данный массив всегда хранится в TSS по старшим адресам. Базовый адрес указывает на начало массива. (Более подробную информацию о битовом массиве разрешения ввода/вывода см. в Главе 8).
При использовании механизма подкачки страниц важно избегать помещения границы страницы в пределах части TSS, считываемой процессором при переключении задачи (первые 108 байтов). Если граница страницы находится в пределах этой части TSS, то страницы по обеим сторонам границы должны присутствовать в памяти одновременно. При отсутствии страницы или генерации исключения общей защиты после того, как процессор начал чтение TSS, возникает состояние невосстановимой ошибки.