【发布时间】:2013-06-12 03:37:32
【问题描述】:
我发现内核模式驱动程序在特权模式下运行时存在风险,但是是否有任何单片内核可以执行任何形式的驱动程序/可加载模块沙盒,或者这真的是微内核的领域吗?
【问题讨论】:
标签: operating-system kernel device-driver
我发现内核模式驱动程序在特权模式下运行时存在风险,但是是否有任何单片内核可以执行任何形式的驱动程序/可加载模块沙盒,或者这真的是微内核的领域吗?
【问题讨论】:
标签: operating-system kernel device-driver
是的,有些平台具有“单片”(对于单片的某些定义)内核,可以为某些驱动程序执行驱动程序沙盒。 Windows 在最新版本中使用用户模式驱动程序框架执行此操作。这样做有两个原因:-
另一位发帖人说这没有意义。希望以上内容解释了您可能想要这样做的原因。此外,另一位发帖人说他们是性能问题。同样,这取决于驱动程序的类型。在 Windows 中,这通常用于 USB 驱动程序。在 USB 驱动程序的情况下,无论驱动程序在何种模式下运行,驱动程序都不会直接与硬件直接对话 - 它们正在与正在与 USB 主机控制器对话的另一个驱动程序对话,因此开销要少得多如果您编写的驱动程序必须在用户模式下对 IO 端口进行 bit bang 操作,那么用户模式通信将不会如此。此外,您将避免为对性能至关重要的硬件编写用户模式驱动程序 - 在打印机和音频硬件的情况下,用户模式转换比硬件本身快得多,以至于一两个额外模式上下文切换的性能成本可能无关紧要。
因此,有时值得这样做只是因为额外的健壮性和易于开发使得小的且通常不明显的性能降低是值得的。
【讨论】:
这种沙盒没有任何意义,操作系统完全信任驱动程序代码。基本上这个驱动程序成为内核的一部分。在 FS 崩溃或内核的任何主要子系统后,您无法进行故障转移。基本上它是坏的(崩溃后的故障转移,想象一下你可以在启动盘的存储驱动程序崩溃之后做些什么?),因为可能导致数据丢失。 其次 - 沙盒会导致所有内核代码的性能受到影响。
【讨论】: