ファイルとは何ですか?


9

ストレージだけでなく、ストレージに関連しないprocfsや/ dev / null(または任意のヒューズベースのファイル)などの抽象化も含むファイルの正式な定義を探しています。

これまでのところ、すべてのファイルは、

  • 識別できる
  • 名前を付けることができます(通常は階層構造で編成されます)
  • バイトストリームとしてアクセスできます
  • 通常、権限とその他の(システム固有の)メタデータを提供します

しかし、これまでに読んだOSの本では、有用な正式な定義を見つけることができませんでした。


iノードを調べましたか?
Bhaskar、2016

1
/ dev / nullのようなものはファイルではなく、むしろファイルであるかのようにファイル以外のものにアクセスできるようにするハックであると私は主張します。また、「フォーマル」の意味がわかりません。どんな形式の中で?
David Richerby 2016

「ファイルはfopenで開くことができるものです」?
adrianN 2016

@DavidRicherbyファイルまったく同じように動作するソフトウェア抽象化はすべてファイルです。ソフトウェアエンティティは、その動作に関してのみ定義できます。形式主義に関しては、CSの観点から厳密なものを探しています。たとえば、チューリングマシンの正式な定義があります。
Giacomo Tesio 2016

OSが異なれば、ファイルに対する操作も異なります。たとえば、* nixとWindowsを比較してください。共通点を見つけることはできますが、正確ではありません。さらに、CSでファイルについて話すことはめったにありません-これは、OS、ファイルシステム、おそらくDBMSを設計するとき、またはディスク上のアルゴリズム(ソート/マージなど)でのみ行われると思います。(および他のいくつか)
chi

回答:


6

ウィキペディアによると、コンピューターファイルは単に情報を格納するためのリソースです。この用語は、コンピュータープログラムが文字通りファイルに格納されていたパンチカード時代(ルーズページを格納するために使用されるボックス、下の画像を参照)に由来するようです。ディスクなどの他の形式のメディアが導入されたため、命名法がそれに続きました。

* nixの観点から見ると、ソケット、デバイス、ターミナル、画面/モニター、データファイル、パイプなど、すべてがファイルです。対照的に、Microsoft Windowsは、名前付きパイプ、ソケット、ラスターデバイスなど、永続的なストレージデータ「ファイル」や揮発性リソースを、それらが何であるかのように呼ぶ傾向があります。他のシステムは、これら2つの極端なところのどこかで同様の定義を持つ場合があります。

残念ながら、先ほど述べたように、ファイルはデータを格納する名前付きリソースであるというベースラインの定義に誰もが同意する傾向があることを除いて、ファイルの定義は人によって異なるため、ファイルの単一の定義はありません。永続的なメディア(永続的なメディアは、変更できないことを意味するのではなく、単に電源を入れ直しても永続することを意味します)。

パンチカードファイル]ウィキペディア


ウィキペディアの定義を読みましたが、ストレージに重点を置いています。述べたように、私は/ dev / nullのような、データを格納しないファイルをカバーする定義を探しています。
Giacomo Tesio 2016

@GiacomoTesio私が試みようとした2つの点は、(a)ファイルは異なる作成者にとって異なることを意味しますが、(b)ファイルは少なくとも普遍的にリソースとして定義されます。NULと/ dev / nullは、実際には何も格納しないので特別なリソースですが、それでもリソースです。リソースは、データを送信または受信できるもの(またはその両方)にすぎません。一般的なOSブックのファイルの定義は、作成者の視点に依存します。
phyrfox 2016

2

私はファイルを一連のバイトと考えています。名前を失った後でも(通常はリンクを解除するrmの呼び出しによって引き起こされます)、チャンクが他のものによって上書きされるまで、ディスク上に存在し続けます。ファイル形式は、ファイルを読み取るためのコンテキストです。すべては、情報はバイトとコンテキストであるという原則に戻ります。

以前のポスターは、デバイスはファイルとして扱われているが、実際にはファイルではないことは正しい。これは非常に便利なハックです。

だから私のファイルの定義:メモリに格納されたバイトのシーケンス。


2
「つまり、ファイルの私の定義:バイトのシーケンス。」(たとえば、UTF-8)バイトのシーケンスです。ファイルですか?
reinierpost 2016

私たちは、ソフトウェアの抽象化、ファイルがまったく同じように動作し何を話しているあるファイル。実際には、その動作を除いて、ソフトウェアエンティティを定義することはできません。
Giacomo Tesio 2016

「私はファイルを一連のバイトと考えています。」「ファイルシステム」の定義はそれだけではありません。たとえば、en.wikipedia.org / wiki / Record
Pseudonym
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.