C/C++ 程序是在 CPU 上运行还是在内核上运行?

Van*_*ing 3 c c++ kernel machine-language

我已经编程好几年了,但有一件事我从来没有完全理解:

有两种类型的编程语言。编译型和解释型,而编译型首先需要编译成解释型语言才能执行。

例如,C/C++ 需要先编译成机器语言,然后才能执行。

我的问题来了:谁真正运行已编译的 C/C++ Windows/Linux 程序?它是由CPU直接解释,还是OS内核执行它并将命令传递给CPU?

如果 CPU 直接执行它,Windows Kernel 怎么会拒绝一些调用呢?否则,是否意味着内核也理解机器语言,或者非内核 C/C++ 程序不能编译为机器语言?

MrZ*_*bra 5

该程序在 CPU 上运行。CPU 具有不同级别的特权,所谓的“特权指令”只能由内核执行 - 这就是操作系统强制执行安全性的方式。

  • X86 有 4 个级别,称为环。内核和某些设备驱动程序的部分运行在最高级别,称为 ring 0。应用程序通常运行在最低级别,称为 ring 3。 (2认同)