Создание операционной системы на ассемблере

         

И снова защита.


Немного терминологии:

Уровень привилегий может быть от 0(высший) до 3(низший). Следовательно повышение уровня привилегий соответствует его уменьшению в численном эквиваленте, понижение - наоборот.

В дескрипторе содержатся биты DPL, которые определяют максимальный уровень привелегий для доступа к сегменту.

В селекторе содержится RPL - то есть запрашиваемый уровень привилегий.

RPL секущего кодового сегмента (хранится в регистре cs) является уровнем привилегий данного процесса и называется текущим уровнем привилегий (CPL)

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

  • В случае если запрашиваемый уровень привилегий больше текущего, то запрашиваемый уровень понижается до текущего.
  • При обращении к сегменту данных RPL селектора должен быть не ниже DPL сегмента.
  • При обращении к сегменту кода возможно только при равенстве CPL, RPL и DPL.
  • Если сегмент кода помечен как подчиненный, то для обращения к нему необходимо иметь уровень привилегий не ниже уровня сегмента. При этом выполнение сегмента происходит с текущим уровнем привилегий.
  • Косвенные вызовы возможны только через шлюзы при соблюдении следующих условий:

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


  • Содержание раздела