Как обратится к сегменту кода на более низком уровне по привилегиям (К примеру с 2-ого на 3-ее кольцо) Такое возможно? Изучаю шлюзы и подчинённые сегменты кода, запутался. На одно ресурсе одно на другом другое. Шлюзы я так понял можно вызывать, когда их DPL>=CPL, в то время сами шлюзы могут вызывать код с DPL<=CPL Верно? Подчинённые сегменты кода можно вызывать когда их DPL<=CPL (Т.е. только с более низкого на более высокий. К примеру с 3 на 2-ой или перый) Верно? Ниже прикрепил картинку с кольцами защиты, может кто-нибудь нарисует пример использования шлюзов и подчинённых сегментов, что бы у меня прояснилась картинка со шлюзами и подчинёнными сегментами.
gizmonder, Напрямую обратиться затруднительно: правила контроля уровня приоритета довольно жёсткие. Если я правильно вижу картинку, передать управление менее привилегированному коду можно только через retf / iret. DPL шлюза указывает минимальный уровень привилегий, с которого им можно воспользоваться; при этом запрашиваемый уровень привилегий тоже должен быть не ниже. То есть DPL нужного для перехода 2->3 шлюза должен быть 3. В то же время уровень привилегий кода, которому передаём управление, опять же должен быть не ниже текущего, а вот с этим — затык. Так что, наверное, надо модифицировать стек кольца 3 чтобы обеспечить возврат (скорее всего понадобятся два переходника: в кольце 3 и в кольце 2), уложить на стек кольца 2 указатели на этот модифицированный стек и на код, который надо вызвать, ну и retf в помощь.
Не верно не верное понимания DPL. http://ru.osdev.wikia.com/wiki/IAM:Глава_4 Картинке в документации от интел.