Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные понятия.DOC
Скачиваний:
25
Добавлен:
16.12.2018
Размер:
553.47 Кб
Скачать

Организация прерываний. Основные отличия организации прерываний в защищенном режиме по сравнению с реальным режимом.

Организация прерываний в реальном режиме практически ничем не отличается от организации прерываний в процессоре Intel 8086. В защищенном режиме, а также в его модификации в виде виртуального режима (V – режима), механизм прерываний при особых случаях, сохранив общую реакцию на их возникновение, значительно усовершенствован.

Основные усовершенствования сводятся к следующим.

  1. Трансформация таблицы векторов прерываний в дескрипторную таблицу прерываний (IDTInterrupt Description Table).

  2. Более сложный процесс перехода к обработчику особого случая или прерывания с привлечением системных объектов в виде шлюзов.

  3. Возможность передачи обработчику дополнительной информации о причине возникновения особого случая с помощью так называемого кода ошибки (Error Code).

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

Для защищенного режима используется следующая классификация программных прерываний, которые обобщаются единым наименованием exception, (особый случай). В зависимости от способа возникновения особых случаев и возможности перезапуска (рестарта ЦП) после их обработки с вызвавшей их командой, принято различать три вида особых случаев:

а) Fault (нарушение) – особые случаи, которые выявляются и обслуживаются либо перед выполнением, либо во время выполнения “виновной” команды.

При обнаружении нарушения, сохраняемые в стеке значения CS, EIP, указывают на команду, вызвавшую это нарушение, а не на следующую команду программы. Это дает возможность осуществлять рестарт программы после устранения причины нарушения именно с виновной команды.

Типичными примерами нарушений могут служить отсутствие сегмента или страницы в ОП.

б) Trap (ловушка) – особый случай, который возникает непосредственно после выполнения команды, вызвавшей этот особый случай. Значение регистров CS и EIP, сохраняемые при срабатывании ловушек, указывают на команду следующую по отношению к команде, вызвавшую это срабатывание.

Типичным примером ловушки может служить ловушка пошагового выполнения программы, ее генератором является установленный флаг TF.

в) Abort (авария, выход из процесса) – особый случай, который не позволяет точно локализовать вызвавшую его команду осуществить рестарт программы.

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

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