Unixに似たファイルシステムを備えたハードドライブと、以下の仕様が提供されています。
ブロックサイズは4KB、ブロックアドレス長は4バイトで、i-nodeは伝統的な構造(直接ポインタ10個、間接ポインタ1個、二重間接ポインタ1個、三重間接ポインタ1個)を持っています。
次のファイルが占めるブロック数(データブロックとアドレスブロックを含む)はいくらですか?
- ファイルAサイズは20KBです。
- ファイルBのサイズは200KBです。
- ファイルC、サイズ2000KB
- ファイルD、サイズ20000KB
ここでの問題は、この問題を解決できる公式さえ見つからないことです。数式がある場合は、値を変更するだけで終了します。トラブルシューティングを手伝ってもらうのではなく、指示を求めるだけです。
答え1
データ構造のどこかに文書があります。
これは私の仕事であり、私は意図的にそれをしません(これはあなたの宿題/勉強です)。
20Kファイルの場合、これは単にinode(間接ブロックなし)です。したがって、20KB/(4KB/ブロック) + inode = 5ブロック + inodeです。
それ以外の場合は、間接ポインタがいくつあるかを知る必要があります。間接ブロック(4KB /(4B /ポインタ)= 1Kポインタ)。 4KB × 10 + 4KB × 1K = 4KB × ( 1K + 10 ) = 4KB × 1034 = 4136KBで十分です。 (inodeを忘れないでください。どれだけ大きいのかわかりません。)
二重および三重間接参照の場合。それぞれ1Kポインタ(1ブロック)を指す1Kポインタ(1ブロック)のツリーがありますが、各ポインタはnullになる可能性があるため、すべてのブロックは割り当てられません。
そしてトリプルの場合、それは単なる拡張です。
また、直接ブロックを最初に割り当ててから、それをサイズから減算します。次に、間接割り当てと減算、二重間接割り当てと減算、トリプル間接割り当てを実行します。適切でない場合は、最新のファイルシステムにアップグレードする必要があります(すでに実行していますが、基本を理解する方が簡単であるため、トレーニングには古いファイルシステムが使用されます)。