ファイルテーブルはファイルシステムまたはメモリにありますか?


9

オペレーティングシステムの制御テーブルのコンテキストで、「ファイルテーブル」という用語は、ファイルシステムの一部であるか、メインメモリ内にあるデータ構造を指しますか(この場合、開いているファイルへの参照しか持たないと想定しています)。 ?私の教科書1は、

これらの表は、ファイルの存在、2次メモリ上のファイルの場所、現在のステータス、およびその他の属性に関する情報を提供します。すべてではないにしても、この情報の多くはファイル管理システムによって維持および使用される場合があります。その場合、OSはファイルに関する知識がほとんどないか、まったくありません。

また、ファイル管理システムとは何ですか?それはファイルシステムを意味しますか?

1ストール、オペレーティングシステム 7 版、p。127

回答:


22

Stallingがメモリ内のiノードテーブルについて話しているのか、ファイルシステム内のテーブルについて話しているのかを判断するための詳細なコンテキストなしでは不明確です。私はずっと以前の本を誰かに貸したが、それを取り戻すことはできなかった。自分でコンテキストを調べることはできません。

「ファイルテーブル」は3つありますが、ここで説明するものは、より一般的に「メモリ内のiノードテーブル」と呼ばれます。2番目は一般に「オープンファイルテーブル」と呼ばれ、プロセスごとに存在します。どちらのテーブルもカーネルメモリにあり、プログラムからアクセスできません。3番目の「テーブル」は、実際にはファイルシステム(ディスク上)内の2つのテーブルセットです。1つ目はディスク上のiノードテーブルで、2つ目はデータブロック自体です(注:この説明は、従来のUNIXファイルシステム管理に関するもので、新しいシステムでは別の組織を持っている)。iノードテーブルのエントリには、間接参照ブロックまたは実際のデータを含むデータブロックへの一連の参照があります。ファイルの鍵ファイルシステム上はiノードであり、データブロック自体ではありません。ストールがディスク上の「ファイルテーブル」について話している場合、それは一般に、FATシステムのiノードテーブルやブロック定義テーブルなどのファイルを示すディスク上の「小さい」テーブルになります。

メモリ内のiノードテーブルに関しては、iノードはファイルシステムからロードされ、そのst_nlink値がインクリメントされ、システムの他の部分からアクセス可能になります。iノードデータがディスクに書き込まれると、st_ctimeが更新されます。inodeがメモリで不要になった場合、st_nlink値は減分され、テーブル内のエントリは空きとしてマークされます。すべてのプロセスは、メモリ内のiノードテーブルに約3または5つのエントリを参照して起動します:のiノードstdinstdoutstderr-これらは多くの場合、デバイス・ファイル(TTY)されている-と、現在のディレクトリへの参照およびルートディレクトリ。iノードはテーブルに一度だけ存在するため、テーブル内の単一のiノードへの複数の参照が存在する可能性があります。

開いているファイルテーブルはプロセスごとに保持され、メモリ内のiノードテーブルへの参照、バッファへのポインタ、および状態情報(fseek(2)からの値やフラグなど)が含まれていopen(2)ます。ファイル記述子は、文字通り開いているファイルテーブルへのインデックスですが、ほとんどの場合「ファイル記述子」について話すとき、人々はオープンファイルテーブルのエントリを参照します。

を使用してファイルを開くopen(2)と、開いているファイルテーブルで利用可能なエントリが見つかり、パス名によるファイル参照のiノードが決定され、そのiノードがメモリ内のiノードテーブルに読み込まれます。まだ読み込まれていない場合は、st_nlinkカウントが増加し、inodeエントリがファイル記述子で参照され、フラグが設定され、バッファが割り当てられます。閉じた場合は、逆になります。

カーネル内のルーチンは「ファイル管理システム」と呼ばれ、「ファイルシステム」はディスク上の編成です。最近では、modprobe(8)ディスク上のさまざまな組織のファイル管理システムに()ロードできる「プラグイン可能な」モジュールがいくつかあります。たとえば、ext2 / ext3 / ext4ファイルシステムタイプがあり、それらのそれぞれがカーネルのファイル管理システムに異なるモジュールを持っています。ntfs、sbfs、nfs、vfat、jfsなどと同じ

これは私が最初に意図したよりも少し長いので、ここで終了します。


これは信じられないほど良い答えです。
Kazark 2011

はい、そのような良い包括的な答えを提供しているときは、自分を止めないでください。
Lizardx 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.