0

だから私はいくつかの試験レビューの問題をやっていて、そのうちの1つは「UNIXシステムVでは、ブロックの長さは1 KBで、各ブロックは合計256のブロックアドレスを保持できます。iノードスキームを使用すると、最大値はいくつですか。ファイルのサイズは?」

ここで皮肉なことに、教授が提供するソリューションがあります。シングル、ダブル、トリプルの間接割り当ての背後にある数学/論理を理解しています。私を混乱させているのは直接割り当てです。

ソリューションによると、2^10バイト=1KBであるため、直接割り当てスキームは10ブロックを使用します。なんで?この公式の背後にある理由は何ですか?UNIX System V iノードの発明者が夢見た任意の数ですか?1024/10 = 102.4バイトごとに1つのアドレスであるため、1024バイに対して10個のポインターを使用することは意味がないため、8個またはその他の数を使用する方がはるかに論理的です。

教授は、私たちの決勝戦でこのような質問があるかもしれないとほのめかしました、そして私は理解できないクッキーカッターの公式を使う危険を冒したくありません。

4

2 に答える 2

6

グーグルはここで尋ねるよりもはるかに迅速かつ簡単にあなたに非常に完全な答えを与えることができたと確信しています、そして実際ここでも私は「inode間接ブロック」を含む投稿の3,145の検索結果を取得します、しかしあなたがここで尋ねたので、ここに行きます返信:

そうですね、ディスク上のiノード構造には、1つのブロック自体の中に収まる場合、特定の数のブロックアドレスと、それに含まれている必要のある他のすべての情報だけを入れる余地があります。

SysV iノードの場合、40バイトのデータブロックアドレス用のスペースがあり、それは13個の3バイトアドレスと「ファイル生成番号」(ここでは無視できます)用に残された1バイトに分割されました。

つまり、13個のアドレスがありますが、それらを効率的に使用して、13個を超えるデータブロックを含むファイルのファイルデータブロックをアドレス指定するにはどうすればよいでしょうか。

最初の10個を直接アドレスとして使用することが決定されました。つまり、ファイルの1〜10番目のデータブロックがどのブロックであるかを直接識別します。11番目、12番目、および13番目のアドレスは、間接ブロックを指します。それぞれ、単一の間接ブロック、二重の間接ブロック、および三重の間接ブロックです。

質問にあるように、各間接ブロックは256個のアドレスを保持できます。したがって、最初の間接ブロックのアドレスのセットがデータブロックを直接指し、二重間接ブロックが最初にデータブロックアドレスのより多くのブロックを指し、トリプル-間接ブロックは、データブロックアドレスへのポインタのより多くのブロックへのポインタのブロックを指します。

このページには素晴らしい図があります。この場合、そのような図がないと混乱は解消されないでしょう。このページでは、厳密なSysVオンディスクフォーマットとは少し異なる詳細について説明していることに注意してください(より直接的なブロックがあり、:

Unixファイルシステムの間接ブロックを理解する

于 2012-12-11T03:20:15.720 に答える
0

1024バイトの単一ブロックと4バイトのポインターを使用すると、1024/4=256のポインターを格納できます。各ファイルにiノード用の単一のブロックがある場合、256 * 1024、つまり256KBのファイルを取得します。でも、その10ブロックがどこから来たのかわかりません。

于 2012-12-11T03:08:37.200 に答える