gpt4 book ai didi

linux - "Switching from user mode to kernel mode"是一个错误的概念

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:06 36 4
gpt4 key购买 nike

我第一次学习“操作系统”。在我的书中,我发现了关于“用户模式”和“内核模式”的这句话:

"Switch from user to kernel mode" instruction is executed only in kernel mode

我认为这是一个不正确的句子,因为实际上没有“内核切换”。事实上,当用户进程需要执行特权指令时,它只是要求内核为自己做一些事情。是否正确?

最佳答案

In fact, when a user process need to do a privileged instruction it simply ask the kernel to do something for itself.

但是这是怎么发生的呢?详细信息是处理器(即 instruction set architecture )和 OS具体(在与您的系统相关的 ABI 规范中解释,例如 here ),但这通常涉及一些 machine codeSYSENTER这样的指令或 SYSCALL (或大型机上的 SVC)能够自动更改 CPU mode (即以受控方式将其切换到内核模式)。系统调用的实际参数(甚至包括系统调用号)通常在寄存器中传递(但细节是特定于 ABI 的)。

所以我觉得从用户模式切换到内核模式的概念是相关的、有意义的(所以“正确”)。

顺便说一句,(硬件)禁止用户模式代码执行特权机器指令,例如与 IO 硬件设备交互的指令(阅读 protection rings)。如果你尝试,你会得到一些硬件 exception (有点类似于 interrupts )。因此你的代码(即使它是恶意的)必须进行系统调用,内核控制(它有很多与权限检查相关的代码),例如所有 IO。

另请阅读 Operating Systems: Three Easy Pieces - 可免费下载。另见 http://osdev.org/ .阅读system call维基页面 & syscalls(2) , 和 Assembler HowTo .

在现实生活中,事情要复杂得多。了解 System Management Mode关于(可怕的)Intel Management Engine .

关于linux - "Switching from user mode to kernel mode"是一个错误的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328628/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com