【问题标题】:Why processes don't have the ability to run in kernel mode?为什么进程不能在内核模式下运行?
【发布时间】:2015-10-15 19:08:59
【问题描述】:

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

  1. 我想为什么操作系统不赋予进程在内核模式下运行以提高其性能的能力(这可能会有很大的提升)?

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

谢谢。

【问题讨论】:

  • 安全、安全、权限、特权等。另外,正如其他人所说,'操作系统的陷阱需要很长时间',相对于什么?
  • 相对于简单指令..

标签: linux-kernel operating-system real-time


【解决方案1】:
  1. 出于安全和稳定性原因,不允许用户空间进程直接访问内核空间函数。

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

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

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

【讨论】:

    【解决方案2】:

    我认为这样做没有意义。

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

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

    【讨论】:

    • 有什么论据为什么它会显着提高速度?陷阱只是一个例外,跳转到将从用户空间保存此寄存器的代码段,并调用系统调用处理程序。如果没有硬件环境,200ml 绝对没有意义。正如我所说,它会运行得更快,但不会显着。
    • 200ml? 0.2升?什么??
    • 您的意思是 200 纳秒吗?如果是这样,按照今天的标准,你有一个非常慢的盒子:(
    • 是的,它需要大约 200 纳秒 .. 你可以在你的机器中检查它并告诉你结果是什么..
    猜你喜欢
    • 2012-05-10
    • 2023-04-08
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多