为什么linux下的驱动文件比windows下小很多?

为什么linux下的驱动文件比windows下小很多?

最近我在Linux中安装了一个图形设备驱动程序,我发现只有几十KB。但在 Windows 中这就是几十 MB。我想知道为什么?

答案1

Linux 的内核驱动程序(.ko 文件)仅处理硬件访问以及一些基本功能。

对于图形驱动程序,这将是

  • 文本模式
  • 帧缓冲区图形模式(包括简单的 2D 加速,如“复制此区域”)
  • 渲染命令队列的接口

所有这些都可以在几千字节内实现,特别是当其他组件被重用时。

OpenGL渲染、Shader编译和提交等复杂操作不在内核中处理,因为这会危及系统稳定性。相反,这些是在单独的进程中处理的,通常是 X 服务器或使用 3D 图形的程序,然后将命令列表发送到驱动程序,驱动程序将其简单地传递到卡。同样,该驱动程序大量重用组件。

在 Windows 下,其理念是将所有这些压缩到内核模块 (.sys) 中,因为组件化没有任何好处(各个供应商通常不会一起工作)。

答案2

好吧,那是因为大多数所需的驱动程序文件实际上都在 Linux 中,所以这就是为什么该图形设备所需的文件不多。对于 Windows,这些设备驱动程序可能不包含在核心中,因此需要更多驱动程序文件。因此,尺寸更大。

相关内容