Понятие прерывания 2 Цель и механизм
Скачать 58.82 Kb.
|
Обработка прерыванийОбработка прерывания в реальном (однозадачном) режимепроизводится в три этапа: прекращениевыполнениятекущейпрограммы; Должно произойти так, чтобы потом вернуться и продолжить работу. Для этого необходимо сохранить содержимое регистров, так как они являются ресурсами, разделяемыми между программами. Эти регистры сохраняются микропроцессором автоматически. Наиболее удобным местом хранения регистров является стек. переходквыполнениюивыполнениепрограммыобработкипрерывания; Здесь определяется источник прерывания и вызывается соответствующий обработчик прерывания. В реальном режиме микропроцессора допускается 256 источников - по кол-ву элементов таблицы векторов прерываний. возвратуправленияпрерваннойпрограмме. Необходимо привести стек в состояние, в котором он был сразу после передачи управления данной процедуре. Работа системы прерываний в защищенном (многозадачном) режимеОбработка прерываний в защищенном режиме отличается от обработки в реальном режиме так же сильно, как и защищенный режим отличается от реального. Потому что: В защищенном режиме немного изменено распределение номеров векторов прерываний. Принципиально иным является механизм обработки прерываний. Классификация прерываний в защищенном режиме Прерывания и исключения можно разделить на несколько групп: сбой; ловушка; аварийное завершение. Это деление производится в соответствии со следующими признаками: какая информация сохраняется о месте возникновения прерывания (исключения)? возможно ли возобновление прерванной программы? Исходя из этих признаков, можно дать следующие характеристики вышеперечисленным группам: Сбой (ошибка) — прерывание или исключение, при возникновении которого в стек (в память) записываются значения регистров, указывающие на команду, вызвавшую данное прерывание. Это позволяет, получив доступ к сегменту кода, исправить ошибочную команду в обработчике прерывания и, вернув управление программе, фактически осуществить ее рестарт (вспомните, что в реальном режиме при возникновении прерывания в стеке всегда запоминается адрес команды, следующей за той, которая вызвала это прерывание). Стековой называют память, доступ к которой организован по принципу: "последним записан - первым считан" (Last Input First Output - LIFO). Ловушка —прерывание или исключение, при возникновении которого в стек записываются значения регистров, указывающие на команду, следующую за командой, вызвавшей данное прерывание. Так же, как и в случае ошибок возможен рестарт программы.. Аварийноезавершение —прерывание, при котором информация о месте его возникновения недоступна или неполна и поэтому рестарт практически невозможен, если только данная ситуация не была запланирована заранее. соответствующие программы-обработчики ошибок, ловушек и аварий будут отличаться алгоритмами работы. Микропроцессор жестко определяет, какие прерывания являются ошибками, ловушками и авариями. |