ЗАПРЕЩАЕТСЯ самостоятельно производить любые переключения в аппаратуре вычислительных комплексов а также вносить изменения в конфигурацию системных программных средств.
В развитие общих замечаний о системе прерываний, приведенных выше в п. 1.4.1 и применительно к конкретному классу вычислительных машин рассмотрим одну из возможных классификаций прерываний для IBM/PC-совместимых ЭВМ. В соответствии с источником возникновения прерываний принято выделять три основных типа: внутренние, внешние и программные (рис. 3.1).
Рис. 3.1. Классификация прерываний в IBM/PC-совместимых ЭВМ
Внутренние прерывания (exceptions или исключения) вырабатываются процессором и делятся, в свою очередь, на логические и отладочные. Логические прерывания являются реакцией на арифметические ошибки типа деления на ноль или переполнения. Отладочные прерывания применяются для организации отладочных режимов. Имеются также прерывания типа «фатальная ошибка» или abort-исключения, которые возникают при невосстановимых системных сбоях, они генерируются только в защищенном режиме процессора и далее не рассматриваются
Запросы на внешние прерывания вырабатываются внешними по отношению к микропроцессору устройствами и делятся на маскируемые и немаскируемые.
Запросы на маскируемые прерывания формируются контроллером прерываний по запросам от периферийными устройств. Такие прерывания принято называть аппаратными. В случае их возникновения происходит временное переключение процессора с выполняемой задачи на обработку прерывания. Возврат происходит в ту же точку прерванной программы, из которой процессор "ушел" на обработку.
З а м е ч а н и е. Переход к обработке внешних прерываний выполняется процессором по завершении текущей команды. В это время в регистрах CS и IP (см. рис. 1.4) уже находится полный адрес следующей команды прерываемой программы. Таким образом, возврат в ту же точку означает переход к выполнению очередной команды (для внешних прерываний).
Запросы на немаскируемые формируются системной платой при возникновении ошибки четности памяти (см. также п. 1.4).
Программные прерывания представляют собой оптимизированные процедуры операционной системы, вызываемые пользовательскими или системными программами для выполнения наиболее часто применяемых операций. Для обращения к этим процедурам используется механизм прерываний. Каждая программа обработки прерывания сохраняет значения всех используемых ею регистров и затем восстанавливает их при возврате в вызывающую программу.
Программные прерывания можно инициировать специальной командой: int <n>, где n — тип прерывания, т.е. номер, идентифицирующий один из векторов в таблице векторов прерываний.
При исполнении команды int <n> микропроцессор выполняет следующие действия:
· помещает в стек регистр флагов,
· обнуляет флаг трассировки TF и флаг включения-выключения прерываний IF для исключения пошагового режима исполнения команд и блокировки других маскируемых прерываний,
· помещает в стек значение регистра CS,
· вычисляет адрес вектора прерывания, умножая n (тип прерывания) на четыре,
· загружает второе слово вектора прерывания в регистр CS,
· помещает в стек значение указателя команд IP,
· загружает в указатель команд IP первое слово вектора прерывания.
Возврат из прерывания происходит по команде IRET. При этом из стека извлекается три 16-битовых значения, загружаемых затем в указатель команд IP, регистр сегмента CS и регистр флагов RF соответственно.
Перечислим отличия при выполнении процедуры и программы обработки программного прерывания.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.