ВУЗ:
Составители:
23
данный селектор, должен соответствовать выполняемой инструкции.
Нарушение типа (например, ссылка инструкции JMP на вентиль вызова)
порождает исключение #GP. При передаче управления действуют
следующие правила привилегий, нарушение которых также приводит к
исключению #GP:
− команды JMP или CALL могут ссылаться либо на подчиненный
сегмент кода с DPL, большим или равным CPL, либо на
неподчиненный сегмент с DPL равным CPL,
− прерывания внутри задачи или вызовы, которые могут изменить
уровень привилегий, могут передавать управление кодовому
сегменту с уровнем привилегий, равным или большим привилегий
CPL, только через вентили с тем же или меньшим уровнем
привилегий, чем CPL,
− инструкции возврата, которые не переключают задачи, могут
передать управление только кодовому сегменту с таким же или
меньшим уровнем привилегий,
− переключение задач может выполняться с помощью вызова,
перехода или прерывания, которые ссылаются на вентиль задач
или сегмент состояния задачи (TSS) с тем же или меньшим
уровнем привилегий.
Смена уровня привилегий, происходящая при передаче управления,
автоматически вызывает переопределение стека
. Начальное значение
указателя стека SS:SP для уровня привилегий 0, 1, 2 содержится в TSS. При
передаче управления по командам JMP или CALL в SS:SP загружается
новое значение указателя стека, а старые значения помещаются в новый
стек. При возврате на прежний уровень привилегий его стек
восстанавливается (как часть инструкции RET или IRET). Для вызовов
подпрограмм с передачей параметров через стек и сменой уровня
данный селектор, должен соответствовать выполняемой инструкции.
Нарушение типа (например, ссылка инструкции JMP на вентиль вызова)
порождает исключение #GP. При передаче управления действуют
следующие правила привилегий, нарушение которых также приводит к
исключению #GP:
− команды JMP или CALL могут ссылаться либо на подчиненный
сегмент кода с DPL, большим или равным CPL, либо на
неподчиненный сегмент с DPL равным CPL,
− прерывания внутри задачи или вызовы, которые могут изменить
уровень привилегий, могут передавать управление кодовому
сегменту с уровнем привилегий, равным или большим привилегий
CPL, только через вентили с тем же или меньшим уровнем
привилегий, чем CPL,
− инструкции возврата, которые не переключают задачи, могут
передать управление только кодовому сегменту с таким же или
меньшим уровнем привилегий,
− переключение задач может выполняться с помощью вызова,
перехода или прерывания, которые ссылаются на вентиль задач
или сегмент состояния задачи (TSS) с тем же или меньшим
уровнем привилегий.
Смена уровня привилегий, происходящая при передаче управления,
автоматически вызывает переопределение стека. Начальное значение
указателя стека SS:SP для уровня привилегий 0, 1, 2 содержится в TSS. При
передаче управления по командам JMP или CALL в SS:SP загружается
новое значение указателя стека, а старые значения помещаются в новый
стек. При возврате на прежний уровень привилегий его стек
восстанавливается (как часть инструкции RET или IRET). Для вызовов
подпрограмм с передачей параметров через стек и сменой уровня
23
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »
