Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
asm.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
694.27 Кб
Скачать

25. Рівні привілеїв дескриптора.

Є режим проца – захищений режим. Захищений він того, що є певні механізми, котрі організовують захист. Захист може діяти як на рівні сторінок, так і на рівні сегментів. Смисл в тому, щоб програма не влізла в чужу область пам’яті (точнш в область пам’яті більш привілейованої проги, зокрема системи) і не змінила його. Для цього вводять рівні привілегій. Є такі рівні привілегій:

  • рівень привілегій запита – записано в 2 молодших бітах селектора сегментів – RPL. Визначає запитувані привілегії і дозоляє звертатись до сегмента програмам із вищими пріоритетами на рівні пріоритету запита – фактично пониження пріоритету проги для сегмента;

  • рівень привілегій дескриптора – записано в бітах 6-5 дескриптора сегментів – DPL. Поле визначає рівень привілегій сегмента або шлюза, вказує, по крайній мірі, кий рівень привілегій повинна мати програма щоб звернутися до цього сегмента або шлюзу;

  • рівень привілегій програми – коли селектор завантажено в регістр CS, тобто туди записано селектор сегмента коду, то його обзивають CPL.

Код рівнів привілегій

  • 0 – максимальний – ОС;

  • 1 – дрова, сервіси системи;

  • 2 – оболонка, сервіси системи;

  • 3 – для юзерських прог.

Фактично у всіх порівняннях порівнюють саме рівень DPL із максимумом двох чисел RPL і CPL. Визначають ефективний рівень привілегій EPL=max(CPL,RPL).

CPL і RPL – однозначні. А DPL – ні. В залежності від того що описує дескриптор він може визначатися як (далі на рос.)

  • Сегмент данных. DPL определяет наибольший номер уровня привилегий, который программа или задача может иметь для доступа к этому сегменту. Например, если DPL сегмента данных равен 1, то только программы, работающие на уровнях 0 и 1 (т.е. имеющие CPL 0 или 1) могут обращаться к этому сегменту.

  • Неподчинённый (т.е. обычный) сегмент кода, без использования шлюза вызова. DPL определяет уровень привилегий, который должна иметь программа или задача для доступа к этому сегменту. Например, если DPL неподчинённого сегмента кода равен 0, то только программа, работающая на CPL = 0 может обратиться к этому сегменту.

  • Шлюз вызова. DPL определяет номер наибольшего уровня привилегий, который может иметь текущая программа или задача для доступа к этому шлюзу вызова (правило доступа - такое же, как и для сегмента данных).

  • Подчинённый или неподчинённый сегмент кода, доступный через шлюз вызова. DPL определяет наименьший номер уровня привилегий, который должна иметь программа или задача для доступа к этому сегменту. Например, если DPL подчинённого сегмента кода равен 2, то к нему будут иметь доступ только программы с CPL 2 или 3.

  • TSS. DPL определяет наибольший номер уровня привилегий, с которого программа или задача может обратиться к этому TSS (правила доступа - такие же, как и для сегмента данных).

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]