Обращение к коду на более низком уровне (с 2-ого на 3-ий)

Тема в разделе "WASM.OS.DEVEL", создана пользователем gizmonder, 7 июн 2010.

  1. gizmonder

    gizmonder New Member

    Публикаций:
    0
    Регистрация:
    7 июн 2010
    Сообщения:
    1
    Как обратится к сегменту кода на более низком уровне по привилегиям (К примеру с 2-ого на 3-ее кольцо) Такое возможно?
    Изучаю шлюзы и подчинённые сегменты кода, запутался. На одно ресурсе одно на другом другое.
    Шлюзы я так понял можно вызывать, когда их DPL>=CPL, в то время сами шлюзы могут вызывать код с DPL<=CPL Верно?

    Подчинённые сегменты кода можно вызывать когда их DPL<=CPL (Т.е. только с более низкого на более высокий. К примеру с 3 на 2-ой или перый) Верно?

    Ниже прикрепил картинку с кольцами защиты, может кто-нибудь нарисует пример использования шлюзов и подчинённых сегментов, что бы у меня прояснилась картинка со шлюзами и подчинёнными сегментами.
     
  2. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    gizmonder,

    Напрямую обратиться затруднительно: правила контроля уровня приоритета довольно жёсткие. Если я правильно вижу картинку, передать управление менее привилегированному коду можно только через retf / iret.

    DPL шлюза указывает минимальный уровень привилегий, с которого им можно воспользоваться; при этом запрашиваемый уровень привилегий тоже должен быть не ниже. То есть DPL нужного для перехода 2->3 шлюза должен быть 3. В то же время уровень привилегий кода, которому передаём управление, опять же должен быть не ниже текущего, а вот с этим — затык.

    Так что, наверное, надо модифицировать стек кольца 3 чтобы обеспечить возврат (скорее всего понадобятся два переходника: в кольце 3 и в кольце 2), уложить на стек кольца 2 указатели на этот модифицированный стек и на код, который надо вызвать, ну и retf в помощь.
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Не верно не верное понимания DPL.
    http://ru.osdev.wikia.com/wiki/IAM:Глава_4
    Картинке в документации от интел.