7.4.6.3.2. Дескриптор сегмента состояния задачи

 

Подобно всем сегментам, сегмент TSS определяется дескриптором. Этот дескриптор находится только в таблице GDT. Попытка идентифицировать сегмент TSS селектором, который имеет бит TI = 1 (флаг индикатора таблицы, означающий текущую таблицу LDT), вызывает обработку исключения. Точно так же, даже если процедура имеет доступ к дескриптору TSS, она не имеет права считывать или

Рис. 6.4. Сегмент состояния задачи МП 80386.

Рис. 6.5. Дескриптор сегмента состояния задачи.

модифицировать сегмент TSS. Чтение или изменение может быть сделано только с помощью другого дескриптора, который переопределяет сегмент TSS как сегмент данных. Попытка загрузить дескриптор TSS в один из регистров сегментов (CS, DS, ES, FS, GS, SS) вызывает обработку исключения. На рис. 6.5 показан формат дескриптора TSS.

Задачи не являются реентерабельными, так как и селектор LDT, и регистр CR3 для задачи запоминаются в сегменте TSS. Бит занятости В поля типа позволяет процессору обнаруживать попытку переключения на задачу, которая еще занята. Код 9 в поле типа показывает, что задача не занята. Код 11 в поле типа показывает, что она занята.

Поля базы, границы и уровня привилегий дескриптора TSS, а также биты дробности G и присутствия Р имеют функции, подобные их аналогам в дескрипторах сегментов данных. База определяет место расположения сегмента в пространстве линейных адресов. Граница определяет размер сегмента. В дескрипторе TSS граница должна содержать значение 103 или больше, потому что сам сегмент TSS требует 104 байт. Попытка переключиться на задачу, у которой граница меньше 103, вызывает обработку исключения.

 

 

HotLog

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий