最近我在Linux中安装了一个图形设备驱动程序,我发现只有几十KB。但在 Windows 中这就是几十 MB。我想知道为什么?
答案1
Linux 的内核驱动程序(.ko 文件)仅处理硬件访问以及一些基本功能。
对于图形驱动程序,这将是
- 文本模式
- 帧缓冲区图形模式(包括简单的 2D 加速,如“复制此区域”)
- 渲染命令队列的接口
所有这些都可以在几千字节内实现,特别是当其他组件被重用时。
OpenGL渲染、Shader编译和提交等复杂操作不在内核中处理,因为这会危及系统稳定性。相反,这些是在单独的进程中处理的,通常是 X 服务器或使用 3D 图形的程序,然后将命令列表发送到驱动程序,驱动程序将其简单地传递到卡。同样,该驱动程序大量重用组件。
在 Windows 下,其理念是将所有这些压缩到内核模块 (.sys) 中,因为组件化没有任何好处(各个供应商通常不会一起工作)。
答案2
好吧,那是因为大多数所需的驱动程序文件实际上都在 Linux 中,所以这就是为什么该图形设备所需的文件不多。对于 Windows,这些设备驱动程序可能不包含在核心中,因此需要更多驱动程序文件。因此,尺寸更大。