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

我现在已经编程好几年了,但是有一件事我从未理解过:

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

例如,在可以执行之前,需要首先将C / C ++编译为机器语言。

这就是我的问题:谁实际上运行已编译的C / C ++ Windows / Linux程序? 是直接由CPU解释,还是OS Kernel执行它并将命令传递给CPU?

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

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