为什么进程在内核模式下没有 运行 的能力?
Why processes don't have the ability to run in kernel mode?
OS使用内核模式(特权模式)和用户模式。出于安全原因,这似乎非常合理。进程无法发出它想要的任何命令,只有操作系统可以发出这些命令。
另一方面,所有上下文切换都需要很长时间。在用户模式和内核模式之间切换,反之亦然。
陷阱到操作系统需要很长时间。
我想为什么操作系统不提供在内核模式下处理 运行 的能力来提高它的性能(这可以是非常大的改进)?
在实时系统中,这以同样的方式工作吗?
谢谢。
我认为这样做没有意义。
1.) 如果你想在内核上下文中使用内核模块 运行ned 某些东西 API,那有什么问题?
2.) 为什么您认为它会提高处理速度?内核和用户空间之间的切换只是额外的寄存器状态保存/恢复。它会 运行 更快,但我认为用户甚至不会注意到它。
- 出于安全和稳定性的考虑,不允许user-space进程直接访问内核space函数。
内核代码保证,没有用户-space 进程(直到以 root 权限执行)可以破坏操作系统。这是现代OS的重要属性。同样重要的是,用户 space 应用程序的开发比内核模块开发简单得多。
如果应用程序需要的性能超过可用的性能-space,可以将其代码(或部分代码)移动到内核中space。例如,网络协议和文件系统被实现为内核驱动程序主要是出于性能原因。
- 实时应用对稳定性的要求更高。他们还使用系统调用。
OS使用内核模式(特权模式)和用户模式。出于安全原因,这似乎非常合理。进程无法发出它想要的任何命令,只有操作系统可以发出这些命令。 另一方面,所有上下文切换都需要很长时间。在用户模式和内核模式之间切换,反之亦然。 陷阱到操作系统需要很长时间。
我想为什么操作系统不提供在内核模式下处理 运行 的能力来提高它的性能(这可以是非常大的改进)?
在实时系统中,这以同样的方式工作吗?
谢谢。
我认为这样做没有意义。
1.) 如果你想在内核上下文中使用内核模块 运行ned 某些东西 API,那有什么问题?
2.) 为什么您认为它会提高处理速度?内核和用户空间之间的切换只是额外的寄存器状态保存/恢复。它会 运行 更快,但我认为用户甚至不会注意到它。
- 出于安全和稳定性的考虑,不允许user-space进程直接访问内核space函数。
内核代码保证,没有用户-space 进程(直到以 root 权限执行)可以破坏操作系统。这是现代OS的重要属性。同样重要的是,用户 space 应用程序的开发比内核模块开发简单得多。
如果应用程序需要的性能超过可用的性能-space,可以将其代码(或部分代码)移动到内核中space。例如,网络协议和文件系统被实现为内核驱动程序主要是出于性能原因。
- 实时应用对稳定性的要求更高。他们还使用系统调用。