Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 26 стр.

UptoLike

Составители: 

26
o загрузка только исполняемых сегментов в DS, ES или SS,
o загрузка сегмента данных в CS.
Проверка ссылок операндов:
запись в сегмент кода или в сегмент данных только для чтения
#GP,
чтение из только исполняемого сегмента кодов#GP,
превышение лимита сегмента#SS или #GP.
Проверка привилегий инструкций:
CPL
0 при выполнении команд LIDT, LLDT, LGDT, LTR, LMSW,
CTS, HLT, INVD, INVLPG, WBINVD, операции с регистрами DRn,
TRn, CRn – #GP,
CPL > IOPL при выполнении команд STI, CLI,
CPL > IOPL при выполнении инструкций IN, INS, OUT, OUTS с
портами, не разрешенными битовой картой ввода/вывода#GP.
При выполнении команд IRET и POPF c недостаточным уровнем
привилегий биты IF и IOPL в регистре флагов не изменяются, исключения
не
генерируются:
IF не меняется при CPL > IOPL,
IOPL не меняется, если CPL >0.
Проверка при передаче управления по инструкциям JMP, CALL, RET,
INT IRET включают, как проверку ссылок по лимиту (в ближних формах
JMP, CALL, RET выполняются только эти проверки), так и проверку
правил привилегий при межсегментных передачах через вентили.
Для того, чтобы задачи не вызывали срабатывания
защиты, в систему
команд введены специальные инструкции тестирования указателей. Они
позволяют быстро удостовериться в возможности использования селектора
или сегмента без риска порождения исключения:
        o загрузка только исполняемых сегментов в DS, ES или SS,
        o загрузка сегмента данных в CS.
     Проверка ссылок операндов:
     − запись в сегмент кода или в сегмент данных только для чтения –
        #GP,
     − чтение из только исполняемого сегмента кодов – #GP,
     − превышение лимита сегмента – #SS или #GP.
     Проверка привилегий инструкций:
     − CPL≠ 0 при выполнении команд LIDT, LLDT, LGDT, LTR, LMSW,
        CTS, HLT, INVD, INVLPG, WBINVD, операции с регистрами DRn,
        TRn, CRn – #GP,
     − CPL > IOPL при выполнении команд STI, CLI,
     − CPL > IOPL при выполнении инструкций IN, INS, OUT, OUTS с
        портами, не разрешенными битовой картой ввода/вывода – #GP.
     При выполнении команд IRET и POPF c недостаточным уровнем
привилегий биты IF и IOPL в регистре флагов не изменяются, исключения
не генерируются:
     − IF не меняется при CPL > IOPL,
     − IOPL не меняется, если CPL >0.
     Проверка при передаче управления по инструкциям JMP, CALL, RET,
INT IRET включают, как проверку ссылок по лимиту (в ближних формах
JMP, CALL, RET выполняются только эти проверки), так и проверку
правил привилегий при межсегментных передачах через вентили.
     Для того, чтобы задачи не вызывали срабатывания защиты, в систему
команд введены специальные инструкции тестирования указателей. Они
позволяют быстро удостовериться в возможности использования селектора
или сегмента без риска порождения исключения:




                                  26