Память. Верхний уровень

Прерывания в защищенном режиме

Источниками запросов, "запускающих" процесс входа в прерывание могут быть события трех типов: аппаратные прерывания, исключения и программные прерывания (см. таблица ниже). В свою очередь, исключения подразделяются на: отказы (fault), ловушки (trap) и выходы из процесса (abort). Они различаются по способу реакции процессора.

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

Ловушка регистрируется также на границе между командами, но после окончания команды, вызвавшей прерывание, в стеке сохраняется адрес следующей команды. Примеры ловушек - программные прерывания INTO или INT3.

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

 

 

Векторы прерываний в защищенном режиме
Яндекс.Метрика