为什么进程在内核模式下没有 运行 的能力?

Why processes don't have the ability to run in kernel mode?

OS使用内核模式(特权模式)和用户模式。出于安全原因,这似乎非常合理。进程无法发出它想要的任何命令,只有操作系统可以发出这些命令。 另一方面,所有上下文切换都需要很长时间。在用户模式和内核模式之间切换,反之亦然。 陷阱到操作系统需要很长时间。

  1. 我想为什么操作系统不提供在内核模式下处理 运行 的能力来提高它的性能(这可以是非常大的改进)?

  2. 在实时系统中,这以同样的方式工作吗?

谢谢。

我认为这样做没有意义。

1.) 如果你想在内核上下文中使用内核模块 运行ned 某些东西 API,那有什么问题?

2.) 为什么您认为它会提高处理速度?内核和用户空间之间的切换只是额外的寄存器状态保存/恢复。它会 运行 更快,但我认为用户甚至不会注意到它。

  1. 出于安全和稳定性的考虑,不允许user-space进程直接访问内核space函数。

内核代码保证,没有用户-space 进程(直到以 root 权限执行)可以破坏操作系统。这是现代OS的重要属性。同样重要的是,用户 space 应用程序的开发比内核模块开发简单得多。

如果应用程序需要的性能超过可用的性能-space,可以将其代码(或部分代码)移动到内核中space。例如,网络协议和文件系统被实现为内核驱动程序主要是出于性能原因。

  1. 实时应用对稳定性的要求更高。他们还使用系统调用。