Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 29 стр.

UptoLike

Составители: 

29
Каждая задача должна иметь связанный с ней TSS. 32-разрядные
процессоры допускают и 16-битный формат TSS. Оба типа сегментов
содержат образы регистров процессора, раздельные указатели стеков для
уровней 0, 1 и 2, а также обратную ссылку на TSS вызвавшей задачи.
Свободное поле TSS может использоваться по усмотрению операционной
системы. TSS для процессоров 386+ содержит элементы, отсутствующие
в
TSS 80286: битовые карты разрешения ввода/вывода и перенаправления
прерываний, а также бит отладочной ловушки Т (при Т=1 переключение в
данную задачу вызывает исключение отладки). Последним элементом TSS
386+ должен быть байт 0FFh. Значение поля лимита дескриптора для TSS
386+ должно превышать 0064h. Структура сегмента состояния задачи
показана на рисунке 1.8.
Карта разрешения ввода
/вывода (I/O Permission Bit Map),
расположенная в конце TSS 386+, имеет по одному биту на каждый адрес
портов ввода/вывода. Разрешению обращения соответствует нулевое
значение бита. Максимальный размер таблицы (2000h), соответствующий
всем 64 К адресам, может быть урезан лимитом TSS. Порты с адресами, не
попавшими в усеченную таблицу, считаются недоступными.
Текущий TSS идентифицируется специальным регистром задачи TR
(Task Register). Этот регистр содержит селектор, ссылающийся на
дескриптор текущего TSS. Программно-невидимые регистры базового
адреса и лимита, связанные TR, загружаются при загрузке в TR нового
селектора.
Для возврата управления задаче, вызвавшей текущую задачу, или ей
прерванной, используется инструкция IRET. В регистре флагов имеется
флаг вложенной задачи NT (Nested Task), который управляет действием
инструкции
IRET. При NT = 0 IRET работает обычным образом, оставаясь
     Каждая задача должна иметь связанный с ней TSS. 32-разрядные
процессоры допускают и 16-битный формат TSS. Оба типа сегментов
содержат образы регистров процессора, раздельные указатели стеков для
уровней 0, 1 и 2, а также обратную ссылку на TSS вызвавшей задачи.
Свободное поле TSS может использоваться по усмотрению операционной
системы. TSS для процессоров 386+ содержит элементы, отсутствующие в
TSS 80286: битовые карты разрешения ввода/вывода и перенаправления
прерываний, а также бит отладочной ловушки Т (при Т=1 переключение в
данную задачу вызывает исключение отладки). Последним элементом TSS
386+ должен быть байт 0FFh. Значение поля лимита дескриптора для TSS
386+ должно превышать 0064h. Структура сегмента состояния задачи
показана на рисунке 1.8.
     Карта    разрешения   ввода/вывода   (I/O   Permission   Bit   Map),
расположенная в конце TSS 386+, имеет по одному биту на каждый адрес
портов ввода/вывода. Разрешению обращения соответствует нулевое
значение бита. Максимальный размер таблицы (2000h), соответствующий
всем 64 К адресам, может быть урезан лимитом TSS. Порты с адресами, не
попавшими в усеченную таблицу, считаются недоступными.
     Текущий TSS идентифицируется специальным регистром задачи TR
(Task Register). Этот регистр содержит селектор, ссылающийся на
дескриптор текущего TSS. Программно-невидимые регистры базового
адреса и лимита, связанные TR, загружаются при загрузке в TR нового
селектора.
     Для возврата управления задаче, вызвавшей текущую задачу, или ей
прерванной, используется инструкция IRET. В регистре флагов имеется
флаг вложенной задачи NT (Nested Task), который управляет действием
инструкции IRET. При NT = 0 IRET работает обычным образом, оставаясь




                                  29