500バイトのセクタ8個を1ブロックとして,ブロック単位でファイルの領域を割り当てて管理しているシステムがある。
2,000バイト及び9,000バイトのファイルを保存するとき,これら二つのファイルに割り当てられるセクタ数の合計は幾らか。
ここで,ディレクトリなどの管理情報が占めるセクタは考慮しないものとする。
正答4
解説
正解は4です。
ブロック単位で領域を割り当てるときのセクタ数を求める問題です。
ファイルは1ブロック単位で割り当てられるので、端数があっても1ブロックを丸ごと使います。
【計算】
1ブロックの容量は、500バイト×8セクタ=4,000バイトです。
2,000バイトのファイルは、2,000÷4,000=0.5なので、切り上げて1ブロックです。
9,000バイトのファイルは、9,000÷4,000=2.25なので、切り上げて3ブロックです。
必要なブロック数の合計は、1+3=4ブロックです。
セクタ数の合計は、4ブロック×8セクタ=32セクタです。
【選択肢別解説】
1:× 22セクタは、2,000÷500=4と9,000÷500=18を足した値です。
ブロック単位の割当てを考慮していません。
2:× 26セクタは、2,000バイトのファイルを1ブロック(8セクタ)、9,000バイトのファイルをセクタ単位の18セクタとして足した値です。
9,000バイトのファイルもブロック単位で切り上げる必要があります。
3:× 28セクタは、2,000バイトのファイルをセクタ単位の4セクタ、9,000バイトのファイルを3ブロック(24セクタ)として足した値です。
2,000バイトのファイルにも1ブロック(8セクタ)が割り当てられます。
4:○ 上の計算のとおり、合計4ブロックで32セクタです。
【ポイント】
ブロック単位の割当てでは、まずブロック数を切り上げで求め、最後にセクタ数へ換算します。
使われない端数の領域は、内部断片化として無駄になります。