私はデバイスドライバプログラミングの初心者です。
Linuxでは、デバイスドライバーとデバイスファイルの違いがわかりません。
誰でも違いを説明できますか?
デバイスドライバー は、特定のタイプのデバイスを操作または制御するソフトウェアです。現代の モノリシックカーネル オペレーティングシステムでは、これらは通常カーネルの一部です。 Linuxを含む多くのモノリシックカーネルはモジュール設計になっており、実行時に実行可能モジュールをロードできます。デバイスドライバーは通常この機能を利用しますが、デバイスドライバーがカーネルイメージにコンパイルされるのを妨げるものはありません。
device file は、あたかもあるかのようにファイルシステムに表示されるデバイスドライバのインターフェイスです通常のファイル。 Unixライクなオペレーティングシステムでは、これらは通常/dev
ディレクトリの下にあり、デバイスノードとも呼ばれます。デバイスファイルは、文字デバイスを表すことができます。これは、一度に1文字ずつストリームデータを出力するか、ブロックデバイスデータブロックへのランダムアクセスを許可します。
デバイスノードは、 mknod
システムコールによって作成されます。デバイスノードによって公開されるカーネルリソースは、 メジャー番号とマイナー番号 で識別されます。通常、メジャー番号はデバイスドライバーを識別し、マイナー番号はドライバーが制御する特定のデバイスを識別します。
デバイスファイルに含まれているように見えるものは、デバイスドライバーがデバイスファイルを通じて公開する内容によって異なります。たとえば、マウスを表す文字デバイスファイル/dev/input/mice
は、マウスの動きを文字ストリームとして公開しますが、ハードディスクを表す ブロックデバイスファイル 、 /dev/sda
など、デバイスのメモリのアドレス可能な領域を公開します。一部のデバイスファイルも入力を受け取り、ユーザー空間アプリケーションがデバイスファイルに書き込むことでデバイスと通信できるようにします。