ストレージだけでなく、ストレージに関連しないprocfsや/ dev / null(または任意のヒューズベースのファイル)などの抽象化も含むファイルの正式な定義を探しています。
これまでのところ、すべてのファイルは、
- 識別できる
- 名前を付けることができます(通常は階層構造で編成されます)
- バイトストリームとしてアクセスできます
- 通常、権限とその他の(システム固有の)メタデータを提供します
しかし、これまでに読んだOSの本では、有用な正式な定義を見つけることができませんでした。
ストレージだけでなく、ストレージに関連しないprocfsや/ dev / null(または任意のヒューズベースのファイル)などの抽象化も含むファイルの正式な定義を探しています。
これまでのところ、すべてのファイルは、
しかし、これまでに読んだOSの本では、有用な正式な定義を見つけることができませんでした。
回答:
ウィキペディアによると、コンピューターファイルは単に情報を格納するためのリソースです。この用語は、コンピュータープログラムが文字通りファイルに格納されていたパンチカード時代(ルーズページを格納するために使用されるボックス、下の画像を参照)に由来するようです。ディスクなどの他の形式のメディアが導入されたため、命名法がそれに続きました。
* nixの観点から見ると、ソケット、デバイス、ターミナル、画面/モニター、データファイル、パイプなど、すべてがファイルです。対照的に、Microsoft Windowsは、名前付きパイプ、ソケット、ラスターデバイスなど、永続的なストレージデータ「ファイル」や揮発性リソースを、それらが何であるかのように呼ぶ傾向があります。他のシステムは、これら2つの極端なところのどこかで同様の定義を持つ場合があります。
残念ながら、先ほど述べたように、ファイルはデータを格納する名前付きリソースであるというベースラインの定義に誰もが同意する傾向があることを除いて、ファイルの定義は人によって異なるため、ファイルの単一の定義はありません。永続的なメディア(永続的なメディアは、変更できないことを意味するのではなく、単に電源を入れ直しても永続することを意味します)。
(ウィキペディア)
私はファイルを一連のバイトと考えています。名前を失った後でも(通常はリンクを解除するrmの呼び出しによって引き起こされます)、チャンクが他のものによって上書きされるまで、ディスク上に存在し続けます。ファイル形式は、ファイルを読み取るためのコンテキストです。すべては、情報はバイトとコンテキストであるという原則に戻ります。
以前のポスターは、デバイスはファイルとして扱われているが、実際にはファイルではないことは正しい。これは非常に便利なハックです。
だから私のファイルの定義:メモリに格納されたバイトのシーケンス。