沙箱内核模式驱动程序是否可能或常用技术?

时间:2013-06-15 17:43:06

标签: operating-system kernel device-driver

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

2 个答案:

答案 0 :(得分:3)

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

  1. 它允许隔离。用户模式驱动程序中的故障不需要关闭整个系统。这对于不被视为系统关键的硬件驱动程序非常重要。这方面的一个例子可能是您的打印机或声卡。在这种情况下,如果驱动程序出现故障,通常可以简单地重新启动,用户通常不会注意到这种情况。
  2. 它使编写和调试驱动程序变得更加容易。驱动程序编写者可以使用常规用户模式库和常规用户模式调试器,而无需担心IRQL和DPC等问题。
  3. 另一张海报说这没有任何意义。希望上面解释了为什么你可能想要这样做。另外,另一张海报说他们是一个表现问题。同样,这取决于驱动程序的类型。在Windows中,这通常用于USB驱动程序。在USB驱动程序的情况下,无论驱动程序操作的模式如何,驱动程序都不直接直接与硬件通信 - 它们正在与另一个与USB主控制器通信的驱动程序进行通信,因此开销更少用户模式通信,如果你正在编写一个必须从用户模式咬掉IO端口的驱动程序。此外,您将避免为性能至关重要的硬件编写用户模式驱动程序 - 在打印机和音频硬件的情况下,用户模式转换比硬件本身快得多,一个或两个附加模式上下文切换的性能成本可能无关紧要。

    因此,有时值得做的仅仅是因为额外的稳健性和易于开发使得小的且通常不显着的性能降低是值得的。

答案 1 :(得分:0)

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