RPL从哪里来?

fer*_*arr 1 privileges x86 assembly osdev memory-segmentation

我有点困惑,我从许多不同的网站上阅读,但我不清楚:

每个段寄存器都有可见部分和不可见部分。可见部分称为段选择器,并且有直接指令来加载段选择器。

请求者特权级别(RPL):该字段标识提供受保护的数据访问的特权级别。

好的,我知道我可以在汇编中使用指令,例如加载选择器,但我无法修改 RPL,对吧?它从何而来?CPU是如何选择的呢?谢谢

Chr*_*odd 5

RPL实际上只是段选择器的最低2位,因此您可以将任何您想要的权限级别加载到其中(0-3),但如果请求的级别高于(数字上低于)相应段的DPL,你会得到 GP 的错误。这允许程序以比操作系统授予它的权限更少的权限轻松访问段(如果这与内存映射 I/O 或其他相关)。