ドライバーは、コンピューターに接続されているデバイスを制御するためにハードウェアと通信できるソフトウェアであることを知っています。一方、カーネルモジュールは、カーネルに挿入してカーネルのパフォーマンスを改善できる小さなコードです。ドライバーがカーネルとどのように連携するのか、デバイスドライバーとカーネルモジュールの主な違いは何ですか?
Weeeeellll .....
カーネルモジュールは非常に具体的なものです。コアカーネルが起動した後、モジュールとして(つまり動的に)ロードされるカーネルの一部。それは何でもかまいません。
ハードウェアを使用するには、次の2つの理由により、ほとんどがカーネルに存在するいくつかのパーツが必要です。
ほとんどのハードウェアを管理するには、カーネル空間の対応物が必要です。これは、カーネルの一部として、または後でオンデマンドでロードされるモジュールとしてコンパイルできます。モジュールでは、それらのすべてをロードすることはできません。
ただし、モジュールはハードウェアのみに関連している必要はありません。 (たとえば)ipv6、ファイアウォールオプションなどの機能を追加するだけのモジュールがあります。
一方、ドライバーは、一般的にハードウェアへの簡単なアクセスを提供するものです。それは通常すべてのハードウェア固有のものを組み込み、一般的なAPIを公開します。そしてジェネリックとは、ジェネリックで十分だが、必ずしもグローバルまたは標準ではないことを意味します。例えば。 ATIグラフィックカードのドライバーは、すべてのATIカードに共通のAPIを公開しますが、他のカードと同じではない場合があります。
ドライバーは、ユーザー空間、カーネル(組み込みまたはモジュール)で作成することも、両端にレッグを持つこともできます。たとえば、今日のグラフィックスカードドライバーには、カーネルとユーザー空間(Xサーバー、DRIなど)の一部があります。