基本情報技術者 2012年 春期 午前(科目A) 問23
問題文
様々なサイズのメモリ資源を使用するリアルタイムシステムのメモリプール管理において、可変長方式と比べた場合の固定長方式の特徴として、適切なものはどれか。
選択肢
ア:メモリ効率が良く、獲得及び返却の処理速度は遅く一定である。
イ:メモリ効率が良く、獲得及び返却の処理速度は遅く不定である。
ウ:メモリ効率が悪く、獲得及び返却の処理速度は速く一定である。(正解)
エ:メモリ効率が悪く、獲得及び返却の処理速度は速く不定である。
🔒 解説は解答すると表示されます
固定長メモリプール管理【午前解説】
正解の理由
正解は ウ です。
固定長方式はあらかじめ同一サイズのブロック群を用意しておき、空きブロックリストから先頭を取り出すだけで割当、解放はリストに戻すのみです。操作はポインタの読み書き程度で済み、実行時間はほぼ一定(決定的)になります。一方、用途によりブロックが過大になると内部フラグメンテーションが発生し、メモリ効率は低下します。よって「メモリ効率が悪く、獲得及び返却の処理速度は速く一定である」が当てはまります。
固定長方式はあらかじめ同一サイズのブロック群を用意しておき、空きブロックリストから先頭を取り出すだけで割当、解放はリストに戻すのみです。操作はポインタの読み書き程度で済み、実行時間はほぼ一定(決定的)になります。一方、用途によりブロックが過大になると内部フラグメンテーションが発生し、メモリ効率は低下します。よって「メモリ効率が悪く、獲得及び返却の処理速度は速く一定である」が当てはまります。
解法ステップ
- 問題文のキーワードを抽出:「固定長方式」「可変長方式」「処理速度」「メモリ効率」「一定/不定」等。
- 固定長方式の基本動作を思い出す:同一サイズブロックのプール、先頭参照で割当・解放。
- 可変長方式との差を列挙:可変は合併/分割や検索が必要で処理変動が発生しやすい。
- 選択肢と照合して、処理速度が「速く一定」、効率が「悪い」を満たす選択肢を選ぶ。
選択肢別の誤答解説
- ア: 「メモリ効率が良く、獲得及び返却の処理速度は遅く一定である。」
→ 誤り。固定長は処理速度は速い(ポインタ操作)であって遅くないし、メモリ効率は良くない。 - イ: 「メモリ効率が良く、獲得及び返却の処理速度は遅く不定である。」
→ 誤り。メモリ効率の良さは可変長に近い特徴で、固定長は逆。速度も遅く不定ではない。 - ウ: 「メモリ効率が悪く、獲得及び返却の処理速度は速く一定である。」
→ 正解。固定長は内部フラグメンテーションで効率低下、操作は固定処理で高速かつ決定的。 - エ: 「メモリ効率が悪く、獲得及び返却の処理速度は速く不定である。」
→ 誤り。速度は速いが不定ではない。固定長は実行時間の予測性が高い。
よくある誤解
- 「効率が良い」は可変長の特性と混同しているケースが多い。可変長はサイズに応じて割当てられるため基本的にメモリ効率は高いが断片化や合併に処理を要する。
- 「速いが不定」は固定長の高速性を見落としている誤り。固定長は設計次第でO(1)かつ決定時間であることがポイント。
- 「固定長なら常に良い」は誤り。利用するオブジェクトサイズの多様性が高い場合、内部フラグメンテーションにより総メモリ消費が増え運用に不利になる。
補足コラム
- 実装例と派生手法:固定長プールはスラブアロケータ(kernelのキャッシュ)やオブジェクトプールとして実装され、サイズごとに複数のプールを用意すると内部フラグメンテーションを軽減できます。可変長方式(一般的なmalloc/free)は最良適合やビン方式、ビディング(バディ)法などで断片化対策や性能改善を図ります。
- リアルタイムシステムの観点:リアルタイム性(デッドライン遵守)が最優先の場合、処理時間の最悪ケースが小さく予測可能な固定長方式が好まれます。メモリ使用量の厳密な制御が必要な場面では、適切な設計・事前割当(スタティックアロケーション)を併用します。
FAQ
Q: 可変長方式はいつ使うべきですか?
A: オブジェクトサイズが多様でメモリ効率を重視し、処理時間の厳密な予測が不要な一般用途で有効です。
A: オブジェクトサイズが多様でメモリ効率を重視し、処理時間の厳密な予測が不要な一般用途で有効です。
Q: 固定長方式でも断片化を減らせますか?
A: はい。サイズ別プール(複数の固定サイズ)やスラブを使えば内部フラグメンテーションをある程度抑えられます。
A: はい。サイズ別プール(複数の固定サイズ)やスラブを使えば内部フラグメンテーションをある程度抑えられます。
Q: リアルタイムで可変長を使う際の対策は?
A: 予め最大数を確保するプーリングや、割当操作を初期化時に行っておくプリアロケーションが一般的です。
A: 予め最大数を確保するプーリングや、割当操作を初期化時に行っておくプリアロケーションが一般的です。
関連キーワード: メモリプール、固定長方式、可変長方式、内部フラグメンテーション、スラブアロケータ、オブジェクトプール、リアルタイム性、割当時間予測

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

