デバイスドライバとカーネルモジュールの違いは何ですか

デバイスドライバとカーネルモジュールの違いは何ですか

私はドライバがコンピュータに接続されているデバイスを制御するためにハードウェアと通信するソフトウェアであることを知っています。カーネルモジュールは、カーネルのパフォーマンスを向上させるためにカーネルに挿入できる小さなコードです。ドライバがカーネルとどのように動作するか、デバイスドライバとカーネルモジュールの主な違いは何であり、どのように動作するかを尋ねたいと思います。

ベストアンサー1

うううう…

カーネルモジュールは非常に具体的なものです。つまり、コアカーネルの起動後にモジュールに(つまり動的に)ロードされるカーネルの一部です。それは何でもすることができます。

ハードウェアを使用するには、次の2つの理由でメインカーネルの一部が必要です。

  1. ユーザースペースでは、不可能または非現実的なハードウェア操作を実行したり、プロセス範囲外の状態を維持したりできます。
  2. これは、ユーザー空間でこれを行うのが本当に非効率的だからです。

ほとんどのハードウェアを管理するには、カーネル空間対応デバイスが必要です。カーネルの一部としてコンパイルするか、後で要求時にロードされるモジュールにコンパイルできます。モジュールの場合、すべてのモジュールをロードすることはできません。

しかし、モジュールがハードウェアに関するものである必要はありません。一部のモジュールは、ipv6、ファイアウォールオプションなどの機能を追加します。

一方、ドライバは通常ハードウェアへの簡単なアクセスを提供します。一般的には、すべてのハードウェア関連エントリを含み、共通APIを公開します。一般的なものは十分に一般的ですが、必ずしもグローバルでも標準的なものでもないことを意味します。たとえば、ATIグラフィックカード用のドライバはすべてのATIカードに共通のAPIを公開しますが、他のカードでは異なる場合があります。

ドライバは、ユーザースペース、カーネル(組み込みまたはモジュール)から作成することも、両端に分岐を持つこともできます。たとえば、現在のグラフィックドライバの一部はカーネルにあり、一部はユーザースペース(Xサーバー、DRIなど)にあります。

おすすめ記事