4.3.4. Межсегментные передачи управления без изменения или с уменьшением уровня привилегий.Это модель взаимодействия программ при возврате из вызываемых процедур или программ обработки прерываний или ловушек. Схемы возврата и проверок такие же, как при выполнении перехода по командам FAR CALL или FAR JMP (передача управления без изменения уровня привилегий). Отличиями являются:
В обычных условиях указатель возврата всегда достоверен, поскольку он был сформирован командой CALL или INT. Но здесь учитывается возможность того, что вызываемая процедура могла изменить указатель или неправильно обработать стек. Проверки при возврате из процедур направлены на исключение таких ситуаций. При выполнении возврата из процедур переход считается корректным, если уровень привилегии селектора целевого кодового сегмента, извлеченного из стека, совпадает с уровнем привилегии дескриптора этого сегмента и не превышает текущий уровень привилегий, т.е.: (CPL <= DPLВ) & (DPLВ = CPLВ), где: DPLВ - уровень привилегии сегмента возврата (из стека), Кроме проверок соответствия уровней привилегий, при загрузке селектора кодового сегмента и селектора сегмента стека (восстановление стека) выполняются все стандартные проверки. Со схемой взаимодействия программ без изменения или с уменьшением уровня привилегий командами возврата: из вызываемых процедур - RET, RET n или из программ обработки прерываний (ловушек) - IRET ознакомится по экранной модели (мод. 6).
|