0

我看到内核模式驱动程序在特权模式下运行时存在风险,但是是否有任何单片内核可以执行任何形式的驱动程序/可加载模块沙盒,或者这真的是微内核的领域吗?

4

2 回答 2

3

是的,有些平台具有“单片”(对于单片的某些定义)内核,可以为某些驱动程序执行驱动程序沙盒。Windows 在最新版本中使用用户模式驱动程序框架执行此操作。这样做有两个原因:-

  1. 它允许隔离。用户模式驱动程序中的故障不需要关闭整个系统。这对于不被认为是系统关键的硬件驱动程序很重要。这方面的一个例子可能是您的打印机或声卡。在这些情况下,如果驱动程序出现故障,通常可以简单地重新启动它,而用户通常甚至不会注意到发生了这种情况。
  2. 它使编写和调试驱动程序变得更加容易。驱动程序编写者可以使用常规用户模式库和常规用户模式调试器,而不必担心诸如 IRQL 和 DPC 之类的事情。

另一位发帖人说这没有意义。希望以上内容解释了您可能想要这样做的原因。此外,另一位发帖人说他们是性能问题。同样,这取决于驱动程序的类型。在 Windows 中,这通常用于 USB 驱动程序。在 USB 驱动程序的情况下,无论驱动程序在何种模式下运行,驱动程序都不会直接与硬件直接对话 - 它们正在与正在与 USB 主机控制器对话的另一个驱动程序对话,因此开销要少得多如果您编写的驱动程序必须从用户模式中位 IO 端口,则用户模式通信会比这种情况要好。还,

因此,有时值得这样做只是因为额外的健壮性和易于开发使得小的且通常不明显的性能降低是值得的。

于 2013-06-17T07:59:21.677 回答
0

这种沙盒没有任何意义,操作系统完全信任驱动程序代码。基本上这个驱动程序成为内核的一部分。在 FS 崩溃或内核的任何主要子系统后,您无法进行故障转移。基本上它是坏的(崩溃后的故障转移,想象一下你可以在启动磁盘的存储驱动程序崩溃后做些什么?),因为可能导致数据丢失。其次 - 沙盒会导致所有内核代码的性能受到影响。

于 2013-06-17T07:50:49.563 回答