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

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

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

В эти байты заносится содержимое регистра TR для предыдущей задачи, чтобы
обеспечить возврат к ее выполнению. Поэтому данный селектор называется
селектором возврата. Отдельные поля TSS хранят содержимое сегментных
регистров ES, CS, SS, DS, FS, GS, регистров общего назначения ЕАХ, ЕСХ,
EDX, ЕВХ, ESP, EBP, ESI, EDI, регистра флагов EFLAGS и указателя команд
EIP. При переключении задач содержимое указанных полей из вызванного TSS
загружается в соответствующие регистры процессора. При следующем
переключении
31 16 15 0
Резервировано (0...0) Селектор возврата Ах
ESP0 Ах + 4
Резервировано (0...0) SS0 Ах + 8
ESP1 Ах + С
Резервировано (0...0) SS1 Ах + 10
ESP2 Ах + 14
Резервировано (0...0) SS2 Ах + 18
CR3 Ах+ 1C
EIP Ах+ 20
EFLAGS Ах + 24
ЕАХ Ах+ 28
ЕСХ Ах + 2С
EDX Ах+ 30
ЕВХ Ах + 34
ESP Ах+ 38
EBP Ах + ЗС
ESI Ах + 40
EDI Ах + 44
Резервировано (0...0) ES Ах+ 48
Резервировано (0...0) CS Ах + 4С
Резервировано (0...0) SS Ах+ 50
Резервировано (0...0) DS Ах + 54
резервировано (0...0) FS Ах+ 58
Резервировано (0...0) GS Ах + 5С
Резервировано (0...0) LDT Ах + 60
Относительный адрес БКВВ Резервировано (0...0) Ах + 64
Дополнительная информация для ОС
Битовая карта обслуживания прерываний
Битовая карта ввода-вывода (БКВВ)
I 11111111
Рис. 2.51. Структура сегмента TSS
РАБОТА ПРОЦЕССОРА В ЗАЩИЩЕННОМ И РЕАЛЬНОМ РЕЖИМАХ
текущее содержимое регистров заносится в TSS данной задачи, после чего
производится загрузка регистров из TSS новой задачи, Таким образом,
содержимое TSS обновляется при каждом переключении задачи, фиксируя
текущее состояние.
Содержимое ряда полей в обязательной части TSS не изменяется при решении
задачи. Так, не изменяется содержимое поля, определяющего значение
селектора LDT для данной задачи, и содержимое регистра управления CR3,
которое используется при страничной организации памяти. Не изменяется
также содержимое полей SSO, ESPO, SS1, ESP1, SS2, ESP2, которые
определяют начальный адрес стека при переключении к задачам с более
высоким уровнем привилегий PL = 0,1,2. Такое выделение отдельных стеков
для задач с различными уровнями привилегий обеспечивает их более надежную
защиту. Содержимое указанных полей TSS загружается в соответствующие
регистры в процессе выполнения конкретной задачи.
Бит ловушки Т в сегменте TSS вызывает при Т = 1 исключение типа #DB
("исключение отладки") при переключении на данную задачу. Это исключение
используется при отладке программного обеспечения.
Два последних байта в обязательной части TSS определяют относительный
адрес начала битовой карты ввода/вывода (БКВВ) в TSS. Каждый бит БКВВ
соответствует однобайтовому порту ввода/вывода. Так как процессор
обеспечивает обслуживание до 65536 портов, то полная БКВВ, определяющая
возможность их обслуживания, будет представлять строку длиной 64 Кбит,
занимающую 8 Кбайт памяти. Поэтому относительный адрес БКВВ должен быть
меньше или равен DFFFh. При записи в бите БКВВ нуля разрешается обращение
к порту ввода-вывода, адрес (номер) которого соответствует порядковому
номеру данного бита в карте ввода-вывода. Если значение некоторого бита
БКВВ равно единице, то при поступлении команд обращения к
соответствующему порту процессор реализует исключение типа #GP
("нарушение защиты").
Таким образом, использование БКВВ вводит для команд ввода-вывода
дополнительный вид защиты (помимо выполнения условия CPLdOPL), который
устанавливается для каждого порта индивидуально. Эту защиту можно
обеспечить как для всех, так и для части портов. Если конец БКВВ выходит
за границу сегмента, определенную его размером, который задается
дескриптором TSS, то доступность соответствующих портов с высокими
номерами не зависит от БКВВ. При этом БКВВ контролирует доступ только к
портам с меньшими номерами, для кото-рых биты БКВВ вошли в заданную
дескриптором границу сегмента. Если значение размера сегмента, заданное
дескриптором TSS, меньше указанного в TSS относительного адреса БКВВ, то
эта карта не влияет на доступность портов и ее можно полностью исключить.
Перед БКВВ располагаются 32 байта (256 бит) таблицы, определяющей способ
обслуживания программных прерываний, реализуемых при поступлении команды
INTn в режиме виртуального процессора 8086. Каждому из 256 значений п в
команде INTп соответствует битс таким же номером в данной таблице. Если
этот бит имеет значение "1", то при поступлении соответствующей команды
INTn вызывается подпрограмма обслуживания в защищенном режиме, обращение
к которой производится с помощью таблицы прерываний ЮТ. Если бит в этой
таблице имеет значение "0", то выполняется обращение к подпрограмме
обслуживания, которая должна содержаться в составе выполняемой программы,
написанной для процессора 8086 (вектор соответствующей подпрограммы
обслуживания должен размещаться в таблице, расположенной в начале
адресуемой памяти, адреса OOOOh -03FFh).
За последним байтом БКВВ в TSS должен следовать заключительный байт,
Предыдущая << 1 .. 97 98 99 100 101 102 < 103 > 104 105 106 107 108 109 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed