Tanenbaumの最新のオペレーティングシステムでLinuxのext2ファイルシステムにあるファイルにアクセスし、ファイルの親ディレクトリに到達しようとすると、
ファイルが存在する場合、システムは inode 番号を抽出してインデックスとして使用します。iノードテーブル対応するiノード(ディスク上)を見つけてメモリに入れます。 iノード iノードテーブル、現在開いているファイルとディレクトリ内のすべてのiノードを保持するカーネルデータ構造。
2つの異なるinodeテーブルに言及しましたか?
最初のinodeテーブルはディスクのどこかに保存されていますか?どこに保存されていますか?同じ本の下のディスク、パーティション、ファイルシステムのレイアウトを参照してください。
inode番号からinodeアドレスへのマッピングですか?
2番目のinodeテーブルはメインメモリに保存されていますか?
何かからインデックスノードへのマッピングですか?
答え1
あなたが引用したテキストはおそらく混乱しているようです。ファイルシステムのデフォルトの特権付きinodeはファイルシステムに保存されます。したがって、ディスク(ディスクパーティション)にあるファイルシステムの場合、inodeはディスクにあります。ただし、効率を上げるために、カーネルはアクティブなinodeのローカルコピーをメモリに保存(キャッシュ)します。
繰り返すと、「最初のinodeテーブル」はディスクに保存されます(ファイルシステムがディスクにあると仮定)。それで、あなたは何を尋ねていますか?質問にコピーした両方の数字は、「Iノード」とマークされた領域を表示します。インデックスノードがある場所です。具体的な詳細はファイルシステムの種類によって異なります。
- inode番号からinodeアドレスへのマッピングですか?
いいえ。 inodeは配列(または一部のファイルシステムでは複数の配列)に格納されるため、inodeアドレスは次のように計算できます。inode アドレス = (inode 配列のベースアドレス) + (inode 番号) × (inode サイズ)
そのインデックスノードをすでに知っていることを願っています。含むファイルのメタデータと指すファイルのデータブロックです。
- inode番号からinodeアドレスへのマッピングですか?
はい、「2番目のinodeテーブル」はメモリに保存されます。これはinodeのマップではありません。 inodeのマップ。それコピー選択したinode(およびシステムのinode状態に関するいくつかの追加のメタデータ)。