Kernel x86_64内核-段-权限级别

Kernel x86_64内核-段-权限级别,kernel,x86-64,privileges,segment,privilege-elevation,Kernel,X86 64,Privileges,Segment,Privilege Elevation,我可以理解x86_64 arch拥有的不同特权级别背后的理论。在《英特尔/amd开发指南》中阅读大量关于它们的信息 但我无法理解的是,当我们需要不同的特权级别时(实际用例)。为什么我们使用内核堆栈,例如DPL0而不是3(我们只使用CPL0运行代码段) 我对此感到困惑 你能用真实世界的例子/危险来解释吗 谢谢 编辑: 我更感兴趣的是,内核为应用程序堆栈设置了一个更具特权的配置文件PL 0允许内核防止用户空间程序弄乱它的东西,或者允许自己弄乱彼此的东西。是的,我知道,但问题是内核什么时候决定增加特权

我可以理解x86_64 arch拥有的不同特权级别背后的理论。在《英特尔/amd开发指南》中阅读大量关于它们的信息

但我无法理解的是,当我们需要不同的特权级别时(实际用例)。为什么我们使用内核堆栈,例如DPL0而不是3(我们只使用CPL0运行代码段)

我对此感到困惑

你能用真实世界的例子/危险来解释吗

谢谢

编辑:
我更感兴趣的是,内核为应用程序堆栈设置了一个更具特权的配置文件

PL 0允许内核防止用户空间程序弄乱它的东西,或者允许自己弄乱彼此的东西。是的,我知道,但问题是内核什么时候决定增加特权,到底是为了什么?“我对内核为应用程序堆栈设置更具特权的配置文件的情况更感兴趣”抱歉,我不明白你的意思。您想知道为什么CPU有一个与调用门相关联的环0堆栈吗?因为这样,即使用户空间堆栈损坏,也可以处理系统调用/中断(表示指向只读memo未分配页面)。您想知道为什么有不同的特权级别吗?因为程序就像孩子,如果你让他们不受监督,他们会伤害自己,把家搞得一团糟。我想我读了一些关于使用多个特权级别的操作系统的文章,而不仅仅是内核/用户。也许是因为设备驱动程序运行的权限比核心内核代码要少?