Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 104

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 528 >> Следующая

содержащий единицу во всех разрядах (FFh). Адрес этого байта должен
соответствовать границе сегмента, определенной дескриптором TSS.
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Объем дополнительной части TSS зависит от размеров применяемой БКВВ и
количества служебной информации, используемой операционной системой. Этот
объем определяется характером решаемой задачи. Во многих случаях
дополнительная часть TSS вообще отсутствует.
Обращение к TSS осуществляется путем загрузки в регистр TR селектора,
который адресует размещенный в GDT дескриптор TSS соответствующей задачи
(рис. 2.52). Содержимое регистра TR можно загружать или заносить в память
командами LTR, STR. Однако обычно команда LTR используется только при
инициализации системы для установки начального содержимого TR. В процессе
дальнейшей работы этот регистр загружается процессором при выполнении
команд JMP, CALL, IRET, переключающих задачу.
Дескриптор TSS должен храниться только в таблице GDT. Поэтому обращение к
дескриптору TSS с помощью селектора, имеющего бит TI = 1 (индикатор
таблицы LDT), вызовет исключение типа #TS ("ошибка обращения к TSS"). При
загрузке селектора дескриптора TSS в какой-либо из регистров сегментов
(CS, DS, SS, ES, FS, GS) возникает исключение того же типа.
Содержимое сегмента TSS не может быть непосредственным образом считано
или изменено. При необходимости считывания или изменения TSS необходимо
сформировать дескриптор сегмента данных, имеющий те же атрибуты (базовый
адрес, размер и другие), что и TSS. После этого содержимое TSS может быть
считано или модифицировано путем обращения к сегменту TSS как сегменту
данных с помощью сформированного дескриптора.
Формат дескриптора TSS приведен на рис. 2.52. Назначение битов
присутствия Р и дробности G такое же, как в дескрипторах сегментов. Поле
TYPE (см. рис. 2.43, в) в байте доступа определяет тип задачи (см. табл.
2.59): код 01В1 указывает, что данная задача запрограммирована для
решения на 16-разрядном процессоре 80286, код 11В1 - что задача
предназначена для 32-разрядных процессоров 386, 486, Pentium, Р6. Бит
занятости В в этом байте устанавливается в состояние В = 1 при
переключении на данную задачу. Указанная в дескрипторе граница сегмента
TSS должна иметь значение не менее чем 67h, что соответствуют
минимальному объему его обязательной части 104 байт. В противном случае
при обращении к TSS реализуется исключение типа #TS. Неиспользуемый бит
AVL в байте 6 дескриптора может быть использован операционной системой и
установлен ею в любое состояние.
При выполнении задач, запрограммированных для решения 16-разрядным
процессором 80286, структура сегмента TSS изменяется (рис. 2.53). Объем
обязательной части сегмента в этом случае составляет 44 байта, и его
граница должна иметь значение не менее чем 2Ch.
Переключение задач осуществляется с помощью команд межсегментного
перехода JUMP, вызова CALL и возврата IRET. Если селектор (sel 16)
команды JUMP или CALL выбирает из
Байт 7 Байт 6 Байт 5 Байт 4
II 31 24 23 22 21 20 ПГ 19 16 15 14 13 12 11 10 9
11 8 7 0
Базовый адрес ВА31-24 G 00 AVL Граница L19-16 Р DPL 0
1 0 В 1 Базовый адрес ВА23-16
Базовый адрес А15 -0

31 ... 16 15 . . . II
0
Байт 3, 2 Байт 1, 0
Рис. 2.52. Формат дескриптора TSS
РАБОТА ПРОЦЕССОРА В ЗАЩИЩЕННОМ И РЕАЛЬНОМ РЕЖИМАХ
Байт 7, 6 Байт 5 Байт 4
11 II
31 16 15 14 13 12 11 8 7 0
Резервировано Р DPL 0 0101 Резервировано
Селектор сегмента TSS Резервировано
31 16 15 0
Байт 3, 2 Байт 1, О
Рис. 2.53. Структура сегмента TSS для процессора 80286
таблицы GDT дескриптор, который содержит в поле ТУРЕ байта доступа код
0001 (обращение к TSS для процессора 80286) или 1001 (обращение к TSS для
процессоров 386,486, Pentium, Р6), то выполняется переключение задач. При
этом селектор sel 16 заносится в регистр TR, а в связанный с ним
программно-недоступный регистр загружается дескриптор TSS. В соответствии
с содержимым обязательной части TSS производится загрузка регистров
процессора, после чего он начинает выполнение поступившей задачи. Следует
отметить, что межсегментные команды JUMP и CALL содержат байты eip32,
определяющие новое содержимое регистра EIP. Однако, если селектор
выбирает дескрип-тор TSS, то эти байты игнорируются, а регистр EIP
загружается содержимым соответствующего поля TSS. При переключении задачи
устанавливается значение TS = 1 в регистре управления CR0, хранящем слово
состояния машины MSW. Сброс этого бита в состояние TS = 0 может
производиться командой CLTS или путем загрузки нового содержимого в CR0
командами LMSW или MOV.
Переключение задач производится, если бит занятости В в байте доступа
дескриптора TSS вызываемой задачи имеет значение "0" (задача свободна).
При В = 1 выполняется исключение типа #GP (нарушение защиты). Установка
значения В = 1 (задача занята) в дескрипторе TSS производится командами
JUMP или CALL, переключающими процессор на выполнение данной задачи.
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed