русс | укр

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

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

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

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


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

Приоритеты одновременно происходящих исключений и прерываний


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


Если на границе команды ожидают обработки более одного исключения или прерывания, то процессор обслуживает их в определенной, предсказуемой последовательности. Приоритеты внутри классов исключений и прерываний показаны в Таблице 9

Сначала процессор обслуживает отложенное исключение или прерывание из класса с высшим приоритетом, передавая выполненике первой команде соответствующего обработчика. Исключения с низшими прерываниями отменяются; прерывания с низшими приоритетами остаются подвешенными. Отмененные исключения затем генерируются снова, когда обработчик прерывания возвращает управление в точку прерывания.

Таблица дескрипторов прерываний

Таблица дескрипторов прерываний (IDT) ассоциирует каждый вектор исключения или прерывания с дескриптором процедуры или задачи, которая обслуживает соответствующее событие. Подобно таблицам GDT и LDT, IDT представляет собой массив 8-байтовых дескрипторов. В отличие от GDT, первый элемент IDT может содержать дескриптор. Для формирования индекса в IDT процессор умножает вектор исключения или прерывания на масштабный коэффициент восемь, т.е. число байтов дескриптора. Поскольку всего существует всего 256 векторов, IDT не может содержать более 256 дескрипторов. Она может содержать и менее 256 дескрипторов, поскольку дескрипторы требуются только для тех векторов прерывания, которые действительно могут иметь место в системе.

Таблица 9-2. Приоритеты одновременно произошедших исключений и прерываний-----------------------------------------------------------------Приоритет Описания-----------------------------------------------------------------Высший Исключения отладочных ловушек для последней команды (флаг TF установлен, бит T в TSS установлен, либо встречена контрольная точка данных) Исключения типа сбоя при отладке для следующей команды (контрольная точка для кода) Не-маскируемое прерывание Маскируемое прерывание Сбои при выборке следующей команды (Сбой "сегмент не присутствует" или сбой "общей защиты") Сбои при декодирования команды (Неверный код операции, слишком длинная команда или нарушение привилегированности) для команды WAIT, особая ситуация "Сопроцессор недоступен" (биты TS и MP регистра CR0 установлены) для команды ESC, особая ситуация "Сопроцессор недоступен" (биты EM или TS регистра CR установлены) для команд WAIT или ESC, Исключение "Ошибка в сопроцессоре" (сигнал на штырьке ошибки Error #) Сбои "Сегмент не присутствует", Сбои в стеке и сбои Общей защиты для операндов памяти Сбои Выравнивания для операндов памяти Низший Сбои страниц для операндов памяти-----------------------------------------------------------------

IDT может находиться в любой области физической памяти. Как показано на Рисунке 9-1, процессор находит IDT при помощи регистра IDTR. Этот регистр содержит как 32-разрядный базовый адрес, так и 16-разрядную границу IDT. Команды LIDT и SIDT выполняют загрузку и сохранение содержимого регистра IDTR. Обе команды работают с одним операндом, представляющим собой адрес в памяти шести байтов.



Если вектор ссылается на дескриптор вне заданной границы, процессор входит в режим закрытия. В этом режиме процессор прекращает выполнение команд до приема немаскируемого прерывания или сброса системы с последующей инициализацией. Процессор генерирует специальный цикл шины, указывающий на то, что он вошел в режим закрытия. Разработчикам программного обеспечения может понадобиться знать, как аппаратное обеспечение реагирует на данный сигнал. Например, аппаратное обеспечение может включать индикаторный светодиод на передней панели, генерировать немаскируемое прерывание для записи диагностической информации или выполнять инициализацию сброса системы.

Регистр IDTR47 16 15 0-----------------------------------------------------------------| Базовый адрес IDT | Граница IDT |----------------------------------------------------------------- | | | ------------------------- | | | | | \/ | ----- -------------------------- |---->| + |------->| Прерывание | | ----- |--- прерывание #N ----| | |------------------------| | | |------------------------| | | Шлюз для | | |--- прерывания #3 ----| | |------------------------| | | Шлюз для | | |--- прерывания #2 ----| | |------------------------| | | Шлюз для | ----------------->|--- прерывания #1 ----| -------------------------- Рисунок 9-1. Регистр IDTR определяет положение IDT в памяти

LIDT (Загрузить регистр IDT) загружает регистр IDTR базовым адресом и границей, находящимися в операнде памяти. Данная команда может быть выполнена только на CPL равном 0. Обычно она используется кодом инициализации операционной системы при создании IDT. Операционная система может также использовать ее для изменения с одной IDT на другую.

SIDT (Сохранить регистр IDT) копирует значения базового адреса и границы, хранимые в IDTR, в оперативную память. Эта команда может быть использована на любом уровне привилегированности.



<== предыдущая лекция | следующая лекция ==>
RF маскирует отладочные сбои | Защита в процедурах прерывания


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


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

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

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


 


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

 
 

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

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