8

ディスク上の i ノードとコア内の i ノード (fs.h の「struct i ノード」) の 2 種類の i ノードがあると思います。ディスク上の i ノードは、ファイルシステムの実装に基づいています。根本的な概念を理解しようとしていますが、いくつか質問があります -

  • 誰かが、ディスク上の i ノードがコア内の i ノードに読み取られたりコピーされたりするコード (または手順を順を追って説明する) を教えてもらえますか? つまり、インコア i ノードを作成するときは、ディスク上の i ノードから作成する必要があります。それで、これはどのように起こりますか?
  • インコア i ノードがディスク上の i ノードへのポインタを格納しないのはなぜですか?
  • コア内 i ノードに変更があった場合、それはどのようにディスク上の i ノードに伝播されますか? コードまたはコードフローへのポインターは役に立ちます。

ありがとう!

4

1 に答える 1

2

コアiノードでは、アルゴリズムigetを使用して新しく割り当てられたディスクiノードに空きiノードを割り当てた後、アルゴリズムiallocのディスクiノードからコピーされます。

カーネルは、ディスクiノードとインコアコピーの間の不一致を示すフラグを設定します。カーネルは、ファイルまたはiノードへの変更を記録する必要がある場合、これらのフラグを調べた後、iノードのインコアコピーをディスクに書き込みます。

于 2011-02-13T15:09:22.103 に答える