我看到内核模式驱动程序在特权模式下运行时存在风险,但是有没有任何单片内核可以执行任何形式的驱动程序/可加载模块沙盒,或者这真的是微内核的域名吗?
答案 0 :(得分:3)
是的,有一些平台具有“单片”(对于某些单片的定义)内核,可以为某些驱动程序进行驱动程序沙盒操作。 Windows使用用户模式驱动程序框架在更新版本中执行此操作。这样做有两个原因: -
另一张海报说这没有任何意义。希望上面解释了为什么你可能想要这样做。另外,另一张海报说他们是一个表现问题。同样,这取决于驱动程序的类型。在Windows中,这通常用于USB驱动程序。在USB驱动程序的情况下,无论驱动程序操作的模式如何,驱动程序都不直接直接与硬件通信 - 它们正在与另一个与USB主控制器通信的驱动程序进行通信,因此开销更少用户模式通信,如果你正在编写一个必须从用户模式咬掉IO端口的驱动程序。此外,您将避免为性能至关重要的硬件编写用户模式驱动程序 - 在打印机和音频硬件的情况下,用户模式转换比硬件本身快得多,一个或两个附加模式上下文切换的性能成本可能无关紧要。
因此,有时值得做的仅仅是因为额外的稳健性和易于开发使得小的且通常不显着的性能降低是值得的。
答案 1 :(得分:0)
在这个沙盒中没有任何意义,操作系统完全信任驱动程序代码。基本上这个驱动程序成为内核的一部分。在FS崩溃或内核的任何主要子系统之后,您无法进行故障转移。基本上它是坏的(崩溃后故障转移,想象你可以在引导磁盘崩溃的存储驱动程序之后做什么?),因为可能导致数据丢失等。 第二个 - 沙盒导致性能达到所有内核代码。