私は最近Linuxにグラフィックデバイスドライバをインストールしましたが、サイズは数十KBにすぎません。しかし、Windowsでは数十MBです。理由を知りたいです。
ベストアンサー1
Linuxのカーネルドライバ(.koファイル)は、ハードウェアアクセスと一部の基本機能のみを処理します。
グラフィックドライバの場合、これは次のようになります。
- テキストモード
- フレームバッファグラフィックモード(「この領域のコピー」などの単純な2D加速を含む)
- コマンドキューをレンダリングするためのインタフェース
これは、特に他のコンポーネントを再利用する場合は、数キロバイト以内で達成できます。
OpenGLのレンダリング、シェーダのコンパイル、送信などの複雑な操作は、システムの安定性を損なう可能性があるため、カーネルでは処理されません。代わりに、これらの操作は通常、Xサーバーや3Dグラフィックスを使用するプログラムなどの別々のプロセスで処理され、コマンドのリストはドライバに転送され、ドライバは単にカードに渡します。繰り返しますが、ドライバはコンポーネントの多くを再利用します。
Windowsでは、コンポーネント化の利点がないため、これらすべてをカーネルモジュール(.sys)に圧縮することがアイデアです(さまざまなベンダーは通常一緒に機能しません)。