Как я понял, RPL используется для того, чтобы ограничить круг доступных дескрипторов по сравнению с тем, который определяет CPL. Зачем это нужно?
Сейчас уже незачем, т.к. применяется плоская модель памяти. В сегментированной модели памяти RPL нужен для понижения привилегий доступа к сегменту. Это нужно для того, чтобы менее привилегированная задача не могла подсунуть более привилегированной длинный указатель на сегмент кода, прав для которого у нее не хватает. Таким образом, более привилегированная задача будет работать с переданным длинным указателем как бы от лица привилегий кода, который передал ей этот указатель. Конечно, никто не запрещает искусственно установить RPL селектора в 0, чтобы повысить привилегии, но вызываемый код может выявить это с помощью команды 'ARPL'. В IA32-e плоская модель памяти -- требование процессора (есть правда, тонкости с регистрами fs & gs) а команда 'ARPL' погибла, став частью префикса REX.
rei3er Да, конечно, конечные привилегии считаются по max(CPL, RPL) -- если CPL больше, то учитывается именно он. Видимо, Intel считали, что разработчики, имея команду ARPL, не забудут проверить привилегии при получении указателя из "младших" колец .