谁或如何改变处理器模式,CPU状态,CPU权限级别?

kar*_*tik 5 cpu

我正在阅读Linux设备驱动程序,其中提到内核以特权模式运行,这使得它可以不受限制地访问所有H/W. 如何防止用户程序在此模式下设置CPU?

Ver*_*non 6

如果你想了解这些东西,最好的方法之一是通过代码遵循Linux启动过程内核启动过程.例如,假设你在Linux上运行x86架构.启动时发生的事情是BIOS控制启动加载程序.tern中的引导加载程序控制内核.

然后内核通过一个进程来启动.最初大部分内容都是用汇编语言编写的 - 请参阅/arch/x86/boot/header.S

然后转到/arch/x86/boot/main.c.在主要功能的末尾,您将看到呼叫go_to_protected_mode()

您可以在/arch/x86/boot/pm.c中看到该功能

因此,一旦启动进入内核,它就会成为CPU的网关,并且您的代码将在内核提供的虚拟机中运行.由于用户程序必须通过此虚拟机执行所有操作,因此无法在其他模式下运行用户程序.