русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Переходы через шлюзы ловушки и шлюзы прерываний.


Дата добавления: 2015-06-12; просмотров: 627; Нарушение авторских прав


Процессор i486 выходит из виртуального режима процессора 8086 в результате исключения или прерывания, которые вызывают шлюз ловушки или прерывания. Обработчик исключения или прерывания возвращает управление программе процессора 8086 выполняя команду IRET.

Поскольку эта команда была предназначена для использования процессором 8086, программа процессора 8086 в виртуальном режиме имеет таблицу прерываний, построенную по правилам процессора 8086, которая начинается с нулевого линейного адреса. Однако процессор i486 не использует непосредственно эту таблицу. Для всех прерываний или исключений, возникающих в виртуальном режиме процессра 8086, процессор вызывает обработчики через IDT. Элемент IDT для прерывания или исключения в виртуальном режиме процессора 8086 должен содержать следующее:

  • Шлюз задачи.
  • Шлюз ловушки центрального процессора i486 (тип дескриптора 14) или шлюз прерывания центрального процессора i486 (тип дескриптора 15), которые должны указывать на несогласованный сегмент кода с уровнем привилегированности 0 (наиболее привилегированный).

Прерывания и исключения, вызывающие шлюзы ловушки или прерываний процессора i486, используют нулевой уровень привилегированности. Для этого уровня содержимое регистров сегмента сохраняется в стеке. На Рисунке 23-3 приведен формат такого стека после прерывания или исключения возникшего, когда виртуальная задача процессора 8086 выполняется как программа процессора 8086.

+-----------------------------------------------------------------------+| БЕЗ КОДА ОШИБКИ С КОДОМ ОШИБКИ ||+--------------------+ +---------------------+

Неиспользуется |<--- ESP из | Монитор виртуального|<--- ESP из ||+--------------------| ТSS +---------------------| TSS

Старый GS | | | старый GS | ||+--------+-----------| +---------+-----------|



Старый FS | | | старый FS | ||+--------+-----------| +---------+-----------|

Старый DS | | | старый DS | ||+--------+-----------| +---------+-----------|

Старый ES | | | старый ES | ||+--------+-----------| +---------+-----------|

Старый SS | | | старый SS | ||+--------------------| +---------------------|

Старый ESP | | старый ESP | ||+--------------------| +---------------------|

Старый EFLAGS | | старый EFLAGS | ||+--------------------| +---------------------|

Старый CS | | | старый CS | ||+--------------------| +---------------------|

Старый EIP |<--- новый | старый EIP | ||+--------------------| ESP +---------------------| || | код ошибки |<--- новый || +---------------------| ESP |+-----------------------------------------------------------------------+ Рисунок 23-3. Стек нулевого уровня привилегий после прерывания в виртуальном режиме процессора 8086. После того, как процессор i486 сохранит регистры сегмента процессора 8086 в стеке согласно нулевому уровню привилегий, он обнулит регистры сегмента перед запуском процедуры обработки. Это позволит обработчику прерываний успешно сохранить и восстановить регистры DS, ES, FS и GS, как если бы они были селекторами процессора i486. Обработчики прерываний, которые могут вызываться как в контексте регулярной задачи, так и в контексте виртуальной задачи процессора 8086, могут использовать аналогичное согласование кодов для сохранения и восстановления регистров любой задачи. Обнуление регистров перед выполнением команды IRET не вызывает ловушки в обработчике прерываний. Процедуры прерываний, ожидающие значения в регистрах сегментов или возвращающие значения в них, должны использовать образы регистров, сохраненные в стеке нулевого уровня привелегированности. Обработчики прерываний, которым надо узнать, произошло ли прерывание в виртуальном режиме процессора 8086, могут запросить флаг VM из хранимого содержимого регистра EFLAGS. Если флаг VM в хранимом содержимом регистра EFLAGS установлен, и прерывание или исключение должно обрабатываться виртуальным монитором процессора 8086, то обработчик прерываний передаст управление этому монитору. Виртуальный монитор процессора 8086 может: Либо обработать прерывание внутри виртуального монитора. Либо вызвать обработчик программных прерываний процессора 8086. Возврат прерывания или исключения в программу процессора 8086 включает следующие шаги: Использование вектора прерываний процессора 8086 для размещения заданной процедуры обработки. Сохранение состояния программы процессора 8086 в стеке третьего уровня прерываний (наименее привилегированный). Модификация указателя возврата на стеке нулевого уровня привилегий (наиболее привилегированный) так, чтобы он указывал на процедуру обработки прерываний на третьем уровне привилегий (наименее привилегированный). Выполнение команды IRET для передачи управления обработчику. После того, как команда IRET обработчика на третьем уровне привилегий снова вызовет виртуальный монитор, восстановить указатель возврата на нулевом уровне привилегий, чтобы он указывал на первоначальную процедуру обработки прерываний на третьем уровне привилегий. Выполнение команды IRET для передачи управления назад в прерванную процедуру.



<== предыдущая лекция | следующая лекция ==>
Защита внутри виртуальной задачи процессора 8086 | Ввод / вывод в виртуальном режиме.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.092 сек.