Четверг, 16.05.2024
Шпаргалка :)
Меню сайта
Категории раздела
Мои статьи [172]
Наш опрос
Оцените мой сайт
Всего ответов: 259
Форма входа
Главная » Статьи » Мои статьи

12. Реальный и защищенный режимы работы процессора. Адресация в 32х разрядных микропроцессорах i80x86 при работе в защищенном режиме

Защита адресного пространства задач. Уровни привилегий. Механизм шлюзов.
 Уровни привилегий

Надежность мультипрограммных ОС в МП i80x86 обеспечивается различными механизмами защиты: разделение адресных пространств задач, введение уровней привилегий для сегментов кода и сегментов данных и т.д. Они обеспечивают защиту задач друг от друга, защиту ОС от задач, защиту ОС от её собственных компонентов, защиту задач от собственных ошибок.

Общая стратегия защиты состоит в следующем. Защита адресного пространства задач обеспечивается его локальностью. ОС обеспечивает выделение задачам адресного пространства с помощью дескрипторных таблиц и таблиц трансляции страничных кадров, располагающихся в адресном пространстве ОС, недоступном задачам и используемых МП аппаратно.

При плоской модели в памяти может контролироваться только выход за пределы сегмента, внутри же сегмента контроль обращения памяти фактически не возможен и любая задача или поток может испортить адресное пространство другой задачи.

Для взаимодействия задач с разными адресными пространствами необходимо иметь общее адресное пространство. В этом случае для защиты ОС используется механизм защиты сегментов с помощью уровней привилегий.

Для предотвращения доступа задач в адресное пространство ОС в МП предусмотрено 2 режима работы: супервизора (доступ ОС и выполнение действий по всем адресам адресного пространства) и пользовательский (ограничение набора выполняемых команд и обнаружение и пресечение недопустимых действий). Можно говорить о разных уровнях привилегий этих режимов.

В МП i80х86 имеется 4 уровня привилегий или колец защиты: 0=00, 1=01, 2=10, 3=11.

При этом уровень 00 самый высокий (уровень ОС), а уровень 11 самый низкий (уровень прикладных программ). Уровень 01 используется для программ системного сервиса (обслуживание аппаратуры, драйверов ввода-вывода), а уровень 10 для программ пользовательского интерфейса, СУБД и т.д. Для специальных системных функций, являющихся по отношению к ОС приложениями, чаще всего используются уровни 0 и 3.

Уровень привилегий задач определяет, какие команды в них можно использовать. А также, какое подмножество сегментов и страниц в их адресном пространстве они могут обрабатывать.

Основными системными объектами, которыми манипулирует процессор при работе в защищённом режиме, являются дескрипторы. Дескрипторы сегментов содержат информацию об уровне привилегий соответствующего сегмента кода или данных. Уровень привилегии исполняющейся задачи определяется значением поля привилегии из дескриптора её текущего кодового сегмента. В каждом дескрипторе сегмента есть поле DPL в байте прав доступа. Кроме этого есть следующие уровни привилегий: CPL, RPL и EPL. Поле DPL (direct privilege level) текущего сегмента становится полем CPL (current privilege level). При обращении к какому-нибудь сегменту в нужном селекторе указывается запрашиваемый уровень привилегий RPL.

В пределах одной задачи используются сегменты с одним и тем же уровнем привилегий. Механизм проверки привилегий работает при межсегментных обращениях, когда участвуют целевой (к которому мы обращаемся) сегмент и текущий сегмент кода (из которого идёт обращение). Процессор сравнивает значения CPL, RPL, DPL на основе понятия эффективного уровня привилегий:

EPL = max (RPL,DPL)

Доступ к сегменту ограничивается по следующим правилам:

1) при доступе к сегментам данных проверяется условие:

CPL  EPL,

т.е. уровень привилегий запрашиваемого сегмента должен быть не выше, чем у запрашивающего, иначе существует опасность изменения данных с более высоким уровнем привилегий, что воспринимается, как ошибка и вызывает прерывание;

2) при доступе к сегменту кодов проверяется условие:

CPL = DPL = RPL,

т.е. сегмент, адресуемый сегментным регистром SS, должен иметь уровень привилегий равный уровню текущего сегмента кода. Каждому уровню привилегий сегментов кода соответствует свой стек, т.е. их четыре;

3) передача управления из высокопривилегированного сегмента кода в низкопривилегированный сегмент кода должна сопровождаться проверкой условия:

DPL = CPL.

Категория: Мои статьи | Добавил: Eskander (14.06.2012)
Просмотров: 547 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz