русс | укр

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

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

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

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


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

Прерывания и исключения


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


В процессоре i486 предусмотрены два механизма прерывания выполнения программы:

  1. Исключения - это синхронные события, которые являются ответами процессора на возникновение некоторой ситуации во время выполнения команды.
  2. Прерывание - это асинхронные события, обычно активизируемые сигналом от внешнего по отношению к процессору устройства, нуждающегося в обслуживании.

Прерывания и исключения сходны по действию: они заставляют процессор временно приостановить выполнение программы для запуска программы с более высоким приоритетом. Оcновное отличие между этими двумя видами прерываний заключается в их происхождении. Исключение всегда может быть воспроизведено при помощи перезапуска программы, вызвавшей данное исключение, в то время как прерывание может иметь более сложную, зависимую от времени связь с программой. Как правило, прикладные программисты не вмешиваются в работу прерываний и исключений: их обрабатывают операционная система, монитор или драйверы устройств. Более полная информация для прикладных программистов о прерываниях содержится в Главе 9. Однако, некоторые типы исключений полезны для прикладных программистов и многие операционные системы дают прикладным программистам возможность обслуживать эти исключения самостоятельно. При этом операционная система определяет интерфейс между прикладной программой и механизмом исключений процессор i486. В Таблице 2-4 приведен список прерываний и исключений.

+--------------------------------------------------------------+| Номер вектора | Описание |+---------------+----------------------------------------------|| 0 | Ошибка даления || 1 | Вызов отладчика || 2 | Немаскируемое прерывание || 3 | Точка останова || 4 | Переполнение при выполнении команды INTO || 5 | Превышение границы индекса массива || 6 | Неразрешенный код операции || 7 | Недоступное устройство || 8 | Двойной отказ || 9 | ( Зарезервирован Intel(R). Не должен || | использоваться. Для i486 не используется ) || 10 | Неразрешенный сегмент состояния задачи || 11 | Сегмент отсутствует || 12 | Исключение по стеку || 13 | Общая защита || 14 | Отказ страницы || 15 | ( Зарезервирован Intel(R). || | Не должен использоваться ) || 16 | Ошибка вещественных вычислений || 17 | Проверка выравнивания адреса || 18 - 31 | ( Зарезервирован Intel(R). || | Не должен использоваться ) || 32 - 255 | Маскируемые прерывания |+--------------------------------------------------------------+ Таблица 2-4 Исключения и прерывания

Исключение ошибки деления имеет место при выполнении операций DIV или IDIV, если делитель равен нулю или частное слишком велико для операнда-приемника. ( См. Главу 3 для получения более полной информации о командах DIV и IDIV.)



Исключение для отладки может передовать управление обратно в прикладную программу, если оно произошло в результате установки флага TF (флага ловушки).

Исключение останова вызывается командой INT3. Данная команда используется некоторыми отладчиками для остановки выполнения программы в определенной точке.

Исключение переполнения запускается в том случае, если процессор выполняет команду INTO и при этом флаг переполнения (OF) установлен. См. Главу 3 для ознакомления с командой INTO.

Исключение нарушения границы возникает при исполнении команды BOUND, если индекс массива оказывается больше, чем значение границы массива. См. Главу 3 для ознакомления с командой BOUND.

Исключение отсутствия устройства возникает, если процессор обнаруживает команду ESC и флаг TS (переключение задачи) или EM (присутствие сопроцессора) в управляющем регистре CR0 установлены.

Исключение проверки выравнивания адреса генерируется для невыравненых операндов в памяти в пользовательском модуле ( 3 уровень привилегированности ), обеспечивается одновременной установкой AM и AC. Для операндов в памяти в режиме супервизора ( 0, 1 и 2 уровень привилегированности ), или для операндов в памяти, принятых по умолчанию для режима супервизора, исключение не генерируется.

При выполнении команды INT всегда генерируется прерывание: процессор рассматривает это прирывание как исключение. При этом (как и для всех остальных исключений) вызывается определенная в прикладной программе или в операционной системе подпрограмма обработки исключения. Сама команда INT подробно обсуждается в Главе 3, а для получения более полной информации об исключениях, необходимо обратиться к Главе 9. Исключения, возникшие при сегментации и подкачке страниц обрабатываются несколько иным способом, нежели прерывания. Обычно, при возникновении исключения или прерывания, содержимое счетчика команд (регистр EIP) сохраняется в стеке. При обработке исключения, возникшего при сегментации или подкачке, сначало восстанавливается содержимое всех регистров процессора в том состояние, которое было перед началом интерпретации команды, вызвавшей исключение. Только после этого сохраняется содержимое счетчика команд, который в этом случае указывает на данную команду, а не на следующую. Это позволяет операционной системе обработать исключение и перезапустить вызвавшую его программу. Данный механизм обработки исключений при сегментации и подкачке полностью "прозрачен" для прикладной программы.

 



<== предыдущая лекция | следующая лекция ==>
Смещение | Глава 3. Прикладное программирование.


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


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

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

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


 


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

 
 

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

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