2

ext2ファイルシステムのすべての単一の間接ブロックを印刷しようとしています。直接ブロックを簡単に印刷できますが(0〜11)、単一の間接ブロック、後で二重および三重の間接ブロックに到達する方法がわかりません。ino-> i_block [12]の値を見ると、それを使用して、それが指す場所に到達するにはどうすればよいですか?私はここで簡単な何かが欠けていると確信しています

4

1 に答える 1

3

EXT2 の inode は 128 バイトの長さで、さまざまなフィールドが含まれています。

i_size フィールドは、ファイルに格納されているバイト数、つまりファイルの長さを示します。i_block 配列は、15 個のブロック番号の配列です。

配列の最初の 12 エントリ (i_block[0] から i_block[11] まで) には、直接ブロックのブロック番号が含まれます。これらは、ファイルのコンテンツの最初の 12 ブロックに相当するデータ ブロックを指定します。

配列の 13 番目のエントリ (i_block[12]) には、単独の間接ブロックのブロック番号が含まれます。これは、4 バイトのブロック番号の配列を含むブロックに名前を付けます。これらの各ブロックには、追加のファイル コンテンツが含まれています。

配列の 14 番目のエントリ (i_block[13]) には、二重間接ブロックのブロック番号が含まれます。これは、4 バイトのブロック番号の配列を含むブロックに名前を付けます。直接ブロックの 4 バイトのブロック番号の配列。配列の 15 番目のエントリ (i_block[14]) には、トリプル インダイレクション ブロックのブロック番号が含まれます。

于 2013-03-20T06:52:54.810 に答える