Прерывание 0Eh - Исключение страничного нарушения ( #PF - Page-Fault Exception )

Тип исключения - Fault (ошибка).
Описание
        Означает, что используя механизм трансляции страниц, процессор обнаружил одно из следующих условий:
  •  
  • Сброшен флаг P присутствия страницы в элементе каталога или таблицы страниц (т.е. страница не присутствует в памяти).
  •  
  • Процедура не имеет достаточных привилегий для доступа к странице.
  •  
  • Код, работающий на уровне привилегий пользователя пытается писать в страницу, предназначенную только для чтения. Для процессоров Intel486 и старше, при установленном флаге WP в CR0 это исключение возникнет и для кода, работающего на системном уровне, при попытке писать в страницу уровня пользователя, предназначенную только для чтения.
  •  
  • Установлен один или более зарезервированных битов в элементе каталога страниц.

    Код ошибки: есть (в специальном формате, см. рисунок) и содержит следующее:
  •  
  • Если флаг P = 0, то исключение вызвано отсутствием страницы, иначе - были нарушены права доступа или записаны зарезервированные биты.
  •  
  • Флаг W/R определяет тип доступа к странице, вызвавший нарушение: 0 - чтение, 1 - запись.
  •  
  • Флаг U/S показывает на каком уровне был доступ: 0/1 - пользовательском / системном.
  •  
  • Флаг RSVD показывает наличие единиц в зарезервированных флагах в элементе каталога страниц (если установлен флаг PSE или PAE в CR4).

            Дополнительная информация содержится в регистре CR2 - там будет линейный адрес, по которому было сгенерировано исключение.
            Если исключение вызвано нарушением прав доступа, то флаг доступа в элементе каталога страниц будет установлен.
    Указатель кода: сохранённые значения CS:EIP обычно указывают на команду, сгенерировавшую исключение. Если исключение возникло при переключении задач, то CS:EIP будут указывать на текущую команду новой задачи.
    Изменение состояния программы: не меняется, т.к. команда, вызвавшая исключение, не была выполнена.
            Если в системе применяется мультизадачность, то обработчик этого исключения должен быть в отдельной задаче.

    Вопросы? Замечания? Пишите: sasm@narod.ru

      Copyright © Александр Семенко.
    TopList

    Hosted by uCoz