CPU 如何知道它正在执行 Kernel/Ring-0 指令?

问题描述

假设您将 C 程序编译为可执行文件并运行它。 (假设代码在 x86 架构上运行)

cpu在执行机器码时,不可避免地需要执行ring-3(用户态)之外的指令。执行某些指令时,需要向下跳到ring-0。

但是 cpu 怎么知道它需要改变模式呢?我的第一个猜测是,当 cpu 从 RAM 中获取一条指令时,它会对其进行解码并设置一个寄存器值。根据该指令执行期间的寄存器值,cpu 将改变模式。

但如果是这样的话,难道有人不能编写恶意代码来故意告诉 cpu 切换模式,以便它始终以内核模式执行所需的指令吗?

谢谢!

此外,如果有关于 cpu 模式的介绍/学习的好资源/教科书,我很乐意查看。到目前为止,我找不到任何好的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)