基本情報技術者 2015年 秋期 午前(科目A) 問12
問題文
500バイトのセクタ8個を1ブロックとして、ブロック単位でファイルの領域を割り当てて管理しているシステムがある。2,000バイト及び9,000バイトのファイルを保存するとき、これら二つのファイルに割り当てられるセクタ数の合計は幾らか。ここで、ディレクトリなどの管理情報が占めるセクタは考慮しないものとする。
選択肢
ア:22
イ:26
ウ:28
エ:32(正解)
ブロック単位割り当てでのセクタ数計算【午前2 解説】
要点まとめ
- 結論→ 1ブロックは500バイト×8=4000バイトと見做し、2000Bは1ブロック、9000Bは3ブロックで合計4ブロック=32セクタです。
- 根拠→ ファイル領域はブロック単位で割り当てるため各ファイルのブロック数は切り上げ で求めます。
- 差がつくポイント→ セクタ数で直接割るのではなく「ブロック単位で切り上げ」を必ず行い、内部断片化の概念を意識すること。
正解の理由
1ブロック = 500バイト × 8セクタ = バイト。
2000バイトのファイルは → 切り上げて ブロック。
9000バイトのファイルは → 切り上げて ブロック。
合計ブロック数は ブロック。1ブロックは8セクタなので合計セクタ数は 。
したがって正解は エ(32セクタ)です。
2000バイトのファイルは → 切り上げて ブロック。
9000バイトのファイルは → 切り上げて ブロック。
合計ブロック数は ブロック。1ブロックは8セクタなので合計セクタ数は 。
したがって正解は エ(32セクタ)です。
よくある誤解
- ファイルサイズをそのままセクタサイズ(500バイト)で割ってしまい、ブロック(8セクタ)での切り上げを忘れるミス。
- 切り上げ処理を「小数点以下切り捨て」で行ってしまい、必要ブロック数を過小見積もる誤り。
- ブロック内の空き(内部断片化)を考えずに「実データバイトのみ」でセクタ数を計算する誤解。
解法ステップ
- 1ブロックのバイト数を求める: バイト。
- 各ファイルの必要ブロック数を切り上げで求める:。
- 2000バイト →
- 9000バイト →
- 合計ブロック数 。
- 合計セクタ数は 。
(参考の簡単な計算コード)
import math block = 500 * 8 files = [2000, 9000] blocks_needed = sum(math.ceil(f / block) for f in files) sectors = blocks_needed * 8 blocks_needed, sectors # (4, 32)
選択肢別の誤答解説
- ア: 22
誤りの典型は「(2000/500)+(9000/500)=4+18=22」と直接セクタ単位で割る計算。ブロック単位割当ての切り上げを無視している。 - イ: 26
これは片方だけ切り上げ、もう片方を切り捨てるなどの混合ミスで起こり得る値。どちらもブロック単位で切り上げる必要がある。 - ウ: 28
例えばブロックを4000バイトで考え、9000バイトを2ブロック(誤って切り捨て)とし、2000バイトを1ブロックとした場合の誤計算( ならないが、別の桁違い計算で出ることがある)。正確な切り上げを行えば該当しない。 - エ: 32
正確。2000B→1ブロック、9000B→3ブロック、合計4ブロック、4×8=32セクタ。
補足コラム
ブロック単位の割り当てでは内部断片化(ファイルが最後のブロックを完全には使わないことによる無駄)が発生します。今回の例では2000バイトのファイルは1ブロック(4000バイト)を占有するため2000バイトが無駄になります。9000バイトファイルは3ブロックで割り当てられ、使用は9000バイト、割り当て合計は12000バイトで3000バイトが無駄です。ファイル数が多いと断片化による記憶容量の無駄が大きくなるため、ファイルシステム設計ではブロックサイズの選定が重要です。
FAQ
Q1: セクタサイズを500バイトとした理由は問題文の指定に従うだけでよいですか?
A1: はい。問題文で「500バイトのセクタ8個を1ブロック」と明示されているため、1ブロック=500×8で扱います。
A1: はい。問題文で「500バイトのセクタ8個を1ブロック」と明示されているため、1ブロック=500×8で扱います。
Q2: 切り上げ操作はどう覚えればよいですか?
A2: 「余りがあれば1つ余分に割り当てる」と覚えてください。数式では天井関数 を使います。
A2: 「余りがあれば1つ余分に割り当てる」と覚えてください。数式では天井関数 を使います。
Q3: ディレクトリなどの管理情報が無視される場合、計算は変わりますか?
A3: 今回は「管理情報のセクタは考慮しない」とあるため変わりません。管理情報が加わると合計セクタ数は増えます。
A3: 今回は「管理情報のセクタは考慮しない」とあるため変わりません。管理情報が加わると合計セクタ数は増えます。
関連キーワード: ブロック割り当て、セクタ、内部断片化、切り上げ(天井関数)、ファイルシステム、記憶装置

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

