2010-12-08 13 views
2
Assume disc blocks are 8K bytes and that disc addresses are 32 bits: • 
from the information in the i-node? – What size can be directly addressed 
– What size of file requires a double indirect block? 
– What is the largest possible file? 

出典:http://ti.uni-due.de/ti/en/education/teaching/ss06/dv2/ex2_sol.pdfこれらの各ケースでの最大ファイルサイズはどれくらいですか?

は、誰かが私が質問のこれらの種類を解決するのに役立つことはできますか?

+0

[特定のinode構造を指定した場合の最大ファイルサイズ?](http://stackoverflow.com/questions/2742163/maximum-file-size-given-a-particular-inode-structure) inode最大ファイルサイズのブロックサイズ ") –

答えて

7

私は何年か前に、ファイル・システムの開発に使用されます。

0の範囲でオフセット任意のファイル(80 KB - 1).. ...

をリンクに設けられた材料を使用して包括的には、iノードに格納された直接ブロックを使用してアクセスすることができます。これは、8個のkBブロックが10個存在することから導かれる。

ディスクブロックが8キロバイト(8192バイト)であり、ディスクアドレスは32ビット(4バイト)であるので、各ディスクブロック2048(8192/4)ディスクアドレスエントリまで保持することができます。これは、1つの間接ブロックが最大2048 * 8 kBバイトのファイルデータ(16 MB)を参照できることを意味します。これを拡張すると、間接的な二重ブロックは2048 * 2048 * 8kBのファイルデータ(32GB)を参照できることがわかります。

直接ブロックを使用して最大80KBのファイルデータにアクセスできます。これはファイルオフセット0〜(80 kB - 1)に変換されます。

inodeに格納されている単一の間接ブロックを使用して、最大16 MBのファイルデータにアクセスできます。これは、80 kBから(16 MB + 80 kB - 1)までのファイルオフセットに変換されます。

iノードに格納されている間接的な二重ブロックを使用して、最大32 GBのファイルデータにアクセスできます。これはファイル・オフセット(16 MB + 80 kB)から(32 GB + 16 MB + 80 kB - 1)までの変換になります。

inodeに格納されているトリプル間接ブロックを使用して、最大64 TBのファイルデータにアクセスできます。これはファイルのオフセット(32GB + 16MB + 80KB)から(64TB + 32GB + 16MB + 80KB-1)に変換されます。

したがって、ファイルの理論上の最大サイズは64 TB + 32 GB + 16 MB + 80 KBです。

実際の最大サイズは別の問題です。以下のいずれか1つまたは組み合わせで制限できます。

  1. ディスクのサイズ。
  2. パーティションのサイズ。
  3. 固有のファイルシステムメタデータの制限。いくつかのファイルシステムは、Xが理論上の最大ファイルサイズよりも小さいにもかかわらず、サイズXを超えて処理するようには設計されていません。
  4. 項目3に関連して、独自の価値があるのは、ファイルのサイズを格納するためにiノードに予約されているビット数です。メモリが機能する場合、元のExt2はファイルサイズを32ビットに制限しました。これにより、ファイルサイズの上限(2 GB - 1)が作成されました。

ファイルシステムがスパースファイルをサポートしている場合(実際に間接ブロックを使用しているためリンクに記載されているものがそうである)、実用的な制限があります。スパースファイルを使用すると、2 TBの実際のディスク容量を使用せずに、1 TBディスクに2 TBファイルをフィッティングすることができます。ちなみに、これはinodeがしばしばファイルによって実際に使用されるブロックの数に関する情報を含む理由の1つです。

希望に役立ちます。

1

私は、UNIXシステムに慣れていないんだけど答えが与えられているように見える 、あなたの質問に与えた文書のページ19分の18に。あなたの問題は何ですか?

ディスクブロックを想定8Kバイトであり、 そのディスクアドレスは32ビットである: - 直接iノード内の情報から をアドレス指定することができるどのようなサイズ? - ファイルのどのサイズに間接ブロックdouble が必要ですか? - 最大ファイル数は ですか?回答:a)はディスクブロック= 8Kバイトのiノード=> 10ディスクブロック 住所8K×10 = 80Kは 答えは実際にファイルに記載されている直接

+0

あなたは質問しています。「1つの8Kブロックで2048 KBのアドレス指定ができますか?それは間違った質問だと思う。むしろなぜUNIXシステムが11ビットしか許さないのか(なぜなら、11ビットは2048の異なる数またはアドレスを作成する)です。そして、間接的な単一アドレス指定の場合、2048のアドレスのそれぞれは8kのブロックを指しているので、最大のファイルアドレスは2048x8k = 16M @ Sparky。 – JerryK

+0

よくやった。非常によく説明されています。私の担当者がもう少しであれば、私はあなたの貢献を投票することになります。ただ1つのナグルが残っています。なぜソース文書の18ページで、彼らは2048を2^3 x 2^8として提示するのですか? – JerryK

1

、1を読む必要があるでしょうにアクセスすることができますソース資料の上に、それらのスライドが基づいていました。

基本的には:答えの前に、スライド上

Assume disc blocks are 8K bytes and that disc addresses are 32 bits: 
1)What size can be directly addressed from the information in the i-node? 
2)What size of file requires a double indirect block? 
3)What is the largest possible file? 

、UNIXファイルの構造が説明されている、それは非常に明確に10個のブロックのアドレスを述べています。

だから、明らかに8K×10 = 80Kバイト。

講義自体がなければ私はあなたがいることを自分で調べることができ、あなた自身の材料を引用することはできませんが、私は継続されます。私は2^8は256と2^3は8であることを知っています

ので、256 * 8 =間接的な2MBのは、* * 1024年8 = 16384 = 16777216 = 16メガバイト

間接ダブルされているアドレスである2048キロバイト(2回)* 2048これだけ2048年4ギガバイトである* 8 * 1024 = 34359738368 = 32ギガバイト

トリプル間接的にはそう

32ギガバイト* 2048(2メガバイト)= 70368744177664 = 64TBの二重間接アドレスで、間接のアドレスです。

はい、私は答えを見て、に来ましたいくつかの結論は、私は何も他のことはできませんソース資料なしでは、講義は投稿されていません。

+0

私はどのように1つの8Kブロックは2048 KBに対処することができますか? – unj2

+0

講義ノートを投稿するか、自分で読むことができます。私はそれを説明するために最善を尽くしました。私は、8kブロックが2048kbにアドレスしていないことを指摘します。これはunix(クラスノートを参照)のために2048KBをアドレス指定している80,000アドレスブロックです。 –

+0

私は理論的には、1024が正確であるがディスクの上に〜1000KB = 1MBという理由で8000(1024および/または8の代わりに)を掛けることができると付け加えるべきである。私のソリューションファイルは、実際には8K –

関連する問題