すべてのLinuxデバイスファイルは仮想ファイルですか?

すべてのLinuxデバイスファイルは仮想ファイルですか?

次の2つのファイルは仮想ファイルです。

/dev/sda1
/proc/cpuinfo

私はこれが/dev/sda1デバイスファイル(デバイスドライバを指す)であることを知っているので、このファイルにアクセスすると実際にデバイスドライバにアクセスすることになります。

しかし、/proc/cpuinfoこのファイルもデバイスファイルですか?それでは、他の仮想ファイルはすべてLinuxデバイスファイルですか?

答え1

以下に説明するように、すべてのファイルは/procファイルシステムで提供されます。procマンページ:

ファイルシステムは、procカーネルデータ構造へのインタフェースを提供する擬似ファイルシステムです。

これは、カーネルが保存するデータへのアクセスを提供するためにカーネルによって提供される特別なファイルシステムです。例えばCPU情報(cpuinfo)、プロセス情報(各プロセス識別子に対応する数字ディレクトリにあります/proc)...その中のファイルはデバイスファイルではなく、カーネルから情報を取得するために関数呼び出しを実行するための有効なエンドポイントです。

他の特別なファイルシステムにはdevtmpfssysfs

したがって、いいえ、すべての「仮想」ファイルはデバイスファイルではありません。デバイスノードが物理ファイルとして存在するため、デバイスファイルはまったく仮想ではありません。ほとんどの人がファイルについて考えるのと同じようには機能しませんが、それでもファイルです。

次の質問は、すべてをよりよく理解するのに役立ちます。

答え2

いいえ。 Linux では、 /procカーネルデータ構造へのインタフェースを提供する擬似ファイルシステムです。これには、以下のファイルと同じ意味を持つ文字またはブロック特殊ファイルはありません(これらのファイルを使用してファイルシステムをマウントしたり、モデムやテープドライブなどと通信することはできません)/dev/proc

proc(5)システムマニュアルには、このファイルシステム(man 5 proc)が詳細に記載されています。

関連情報