代码之家  ›  专栏  ›  技术社区  ›  Alon

为什么进程不能在内核模式下运行?

  •  0
  • Alon  · 技术社区  · 9 年前

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

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

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

    谢谢

    2 回复  |  直到 9 年前
        1
  •  2
  •   Tsyvarev    9 年前
    1. 由于安全性和稳定性的原因,不允许用户空间进程直接访问内核空间函数。

    内核代码保证,任何用户空间进程(直到使用根权限执行)都不能破坏操作系统。这是现代操作系统的重要特性。同样重要的是,用户空间应用程序的开发比内核模块开发简单得多。

    当应用程序需要比可用空间更高的性能时,可以将其代码(或部分代码)移入内核空间。E、 例如,由于性能原因,网络协议和文件系统被实现为内核驱动程序。

    1. 实时应用程序对稳定性要求更高。它们还使用系统调用。
        2
  •  0
  •   Alex Hoppus    9 年前

    我认为这样做没有意义。

    1.)如果您希望在内核上下文中使用内核模块API运行某些程序,那么这有什么问题?

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