私はデバイスドライバプログラミングの初心者です。
Linuxでは、デバイスドライバとデバイスファイルの違いを理解していません。
誰でも違いを説明できますか?
答え1
ㅏデバイスドライバ特定の種類の機器を操作または制御するソフトウェアです。現代ではフルカーネルオペレーティングシステム これは通常カーネルの一部です。 Linuxを含む多くのモノリシックカーネルには、実行時に実行可能なモジュールをロードできるモジュール式設計があります。デバイスドライバは通常この機能を利用しますが、デバイスドライバがカーネルイメージにコンパイルされるのを防ぐ方法はありません。
ㅏデバイスファイルこれはデバイスドライバへのインタフェースであり、通常のファイルであるかのようにファイルシステムに表示されます。 Unixファミリーのオペレーティングシステムでは、通常は/dev
次のディレクトリにあります。デバイスノード。デバイスファイルは以下を表すことができます。キャラクターデバイス、ストリーミングデータを一度に1文字ずつ書き出すか、ブロックデバイスデータブロックへのランダムアクセスを許可します。
デバイスノードは次のように構成されます。mknod
システムコール。デバイスノードによって公開されたカーネルリソースは、プライマリ番号とセカンダリ番号。一般に、主装置番号は装置ドライバを識別し、補助装置番号はドライバによって制御される特定の装置を識別する。
デバイスファイルに含まれる内容は、デバイスドライバがデバイスファイルを介して公開する内容によって異なります。たとえば、マウスを表す文字デバイスファイルは、/dev/input/mice
マウスの動きを文字ストリームとして公開しますが、ハードディスクを表すブロックデバイスファイルたとえば/dev/sda
、デバイスメモリのアドレス指定可能な領域を公開します。一部のデバイスファイルは入力を許可するため、ユーザースペースアプリケーションはデバイスファイルに書き込んでデバイスと通信できます。
答え2
Thomas Nymanの言葉に加えて、
Linuxのすべてはファイルであり、USB、ハードディスクなどの一部の内部デバイスは自動的にマウントされるため、デバイスを使用する前にファイルシステムオブジェクトにマウントする必要があります。
新しいデバイスがシステムと対話するには、デバイスファイルを使用するソフトウェアプログラムであるデバイスドライバが必要です。
したがって、デフォルトでは、デバイスファイルはデバイスドライバへのインタフェースを提供します。 cを使用してLinux上で独自のデバイスドライバを作成できます。