Разделы:
Best links:
Дескрипторы и шлюзы
Для повышения производительности системы, рекомендуется размещать IDT по адресу, кратному 8. Размер IDT должен быть кратен 8, т.к. она состоит из 8-байтных дескрипторов, а предел, следовательно, на 1 меньше.
Если произойдёт обращение к вектору прерывания, дескриптор которого должен находиться за пределами IDT, то процессор сгенерирует исключение общей защиты.
Параметры IDT (адрес и предел) процессор хранит с специальном 48-разрядном регистре IDTR. Формат этого регистра следующий:
Адрес начала IDT - это тот адрес, по которому вы разместили IDT. Предел таблицы IDT - это максимальное смещение относительно её начала.
Рис. 5.6. Формат регистра IDTR.
Подготовка и запись значения IDTR аналогична действиям для GDTR, поэтому соответствующий пример здесь не приводится.
Для загрузки содержимого IDTR из памяти в регистр используется команда LIDT, для сохранения из регистра в память - SIDT, причём, команда IDTR может выполняться только на нулевом уровне привилегий, а SIDT - на любом. Единственным операндом у обеих команд является адрес 48-разрядной переменной.
Программа, работающая не на 0-м уровне привилегий может получить адрес и предел IDT и только от операционной системы зависит, разрешит ли она доступ непривилегированной программе к IDT.
предыдущаяследующая© Copyright, 2009.
Для связи: info@dgs-srl.com.