500バイトのセクタ8個を1ブロックとして,ブロック単位でファイルの領域を割り当てて管理しているシステムがある。
2,000バイト及び9,000バイトのファイルを保存するとき,これら二つのファイルに割り当てられるセクタ数の合計は幾らか。
ここで,ディレクトリなどの管理情報が占めるセクタは考慮しないものとする。
正答4
解説
正解は4です。
ブロック単位で領域を割り当てるときに、2つのファイルが使うセクタ数の合計を求める問題です。
ファイルはブロック単位で割り当てるので、1バイトでもはみ出せばもう1ブロック必要になります。
【計算】
1ブロック=500バイト×8セクタ=4,000バイトです。
2,000バイトのファイルは、2,000÷4,000=0.5なので切り上げて1ブロック必要です。
1ブロックは8セクタなので、8セクタになります。
9,000バイトのファイルは、9,000÷4,000=2.25なので切り上げて3ブロック必要です。
3ブロックは3×8=24セクタになります。
合計は8+24=32セクタです。
【選択肢別解説】
1:× 22は、セクタ単位で割り当てた場合の値です。
2,000÷500=4と9,000÷500=18の和ですが、本問はブロック単位なので誤りです。
2:× 26は、2,000バイトのファイルだけをブロック単位(8セクタ)で数え、9,000バイトのファイルをセクタ単位(18セクタ)で数えた値です。
両方ともブロック単位で割り当てるので、正しくは32セクタです。
3:× 28は、2,000バイトのファイルをセクタ単位(4セクタ)で数え、9,000バイトのファイルだけをブロック単位(24セクタ)で数えた値です。
2,000バイトのファイルも1ブロック(8セクタ)を使うので、正しくは32セクタです。
4:○ 1ブロックと3ブロックの計4ブロックで、4×8=32セクタです。
【ポイント】
割当て単位が大きいほど、ファイル末尾の使われない領域が増えます。
「バイト数÷ブロックの大きさ」を切り上げてから、セクタ数に換算する手順を押さえましょう。