エの12.0ミリ秒が正解となる根拠は、動的再配置に必要なメモリアクセス回数と1回のアクセス時間を考慮して算出されるためです。問題文から、セグメント2が解放され、その前後のセグメントが移動して空き領域を統合することが示唆されています。動的再配置では、解放されたセグメント領域を埋めるために、それ以降のセグメントを先頭に移動させる必要があります。
読み込み中...
読み込み中...
図のメモリマップで、セグメント2が解放されたとき、セグメントを移動(動的再配置)し、分散する空き領域を集めて一つの連続領域にしたい。1回のメモリアクセスは4バイト単位で行い、読取り、書込みがそれぞれ30ナノ秒とすると、動的再配置をするのに必要なメモリアクセス時間は合計何ミリ秒か。ここで、1kバイトは1,000 バイトとし、動的再配置に要する時間以外のオーバヘッドは考慮しないものとする。
結論 → 詳細 → 補足 の 3 層構成
エの12.0ミリ秒が正解となる根拠は、動的再配置に必要なメモリアクセス回数と1回のアクセス時間を考慮して算出されるためです。問題文から、セグメント2が解放され、その前後のセグメントが移動して空き領域を統合することが示唆されています。動的再配置では、解放されたセグメント領域を埋めるために、それ以降のセグメントを先頭に移動させる必要があります。
この問題では、セグメント2が解放されたということは、セグメント2のサイズ分の空き領域ができたことを意味します。この空き領域を埋めるために、セグメント3以降のセグメントがセグメント2があった位置まで移動する必要があります。メモリマップの図は直接参照できませんが、一般的にセグメントが連続して配置されている状況を想定すると、セグメント2のサイズ分、後続のセグメントを移動させることになります。1回のメモリアクセスは4バイト単位で行われ、読取り・書込みともに30ナノ秒です。動的再配置では、移動させるセグメントのデータを読み込み、新しい位置に書き込む操作が発生します。
仮に、セグメント2のサイズが1kバイト(1,000バイト)であったとします。1回のメモリアクセスが4バイト単位なので、1kバイトを移動させるには 1000 ÷ 4 = 250 回のメモリアクセスが必要です。この移動は、読み込みと書き込みの両方を含むため、合計で 250回 × 2 (読取り・書込み) = 500回のアクセスが発生します。1回のアクセス時間は30ナノ秒なので、合計時間は 500回 × 30ナノ秒 = 15,000ナノ秒 となります。これをミリ秒に換算すると、15,000ナノ秒 ÷ 1,000,000(ナノ秒/ミリ秒) = 0.015ミリ秒 となります。これは単純な移動計算であり、実際にはセグメントの構造や管理情報なども関わるため、より多くのアクセスが発生すると考えられます。
しかし、問題文の意図としては、セグメント2のサイズが直接的な計算要素ではなく、解放されたセグメントのサイズと、その後のセグメントの移動量に依存すると考えられます。選択肢の数値から逆算すると、例えばセグメント2のサイズが1kバイトで、それに伴い100kバイトのデータ移動が必要だったと仮定すると、100kバイト(100,000バイト)を4バイト単位で移動させるには、100,000 ÷ 4 = 25,000回のアクセス(読込み・書込みで50,000回)が発生します。50,000回 × 30ナノ秒 = 1,500,000ナノ秒 = 1.5ミリ秒 となります。
より現実的な動的再配置のシナリオとして、セグメント2が解放されたことで、それ以降のセグメント全体(例えば、セグメント3、4、5などが結合して一つの大きなセグメントになったと仮定)をセグメント2の開始位置まで移動させる必要が生じます。この移動対象となるデータ量をXバイトとします。1回のアクセスは4バイト単位で、読取り・書込みで30ナノ秒です。動的再配置に必要なメモリアクセス時間合計 = (Xバイト ÷ 4バイト/アクセス) × 2 (読込み+書込み) × 30ナノ秒/アクセス。
ここで、選択肢エの12.0ミリ秒が正解となるためには、Xバイトが相当な量である必要があります。12.0ミリ秒 = 12,000,000ナノ秒。
12,000,000ナノ秒 = (X ÷ 4) × 2 × 30ナノ秒
12,000,000 = (X ÷ 2) × 30
400,000 = X ÷ 2
X = 800,000バイト。
つまり、セグメント2の解放によって、約800kバイトのデータ移動が必要だったと推測できます。
アの1.5ミリ秒は、約100kバイトの移動に相当します。イの6.0ミリ秒は、約400kバイトの移動に相当します。ウの7.5ミリ秒は、約500kバイトの移動に相当します。
したがって、エの12.0ミリ秒が正解となるためには、解放されたセグメント2のサイズと、その後のセグメントの合計サイズが、約800kバイトの移動を必要とする程度に大きかったと解釈するのが妥当です。
正解はエです。
解説は Google Gemini に IPA 公式の問題文・公式解答を入力して生成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ず IPA 公式資料でご確認ください。
最終更新:
検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。
この問題の理解を「分野全体の力」に広げるための足がかり
用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。
コンピュータシステム の他の問題
基本情報技術者 の同じ分野を年度をまたいで演習する
基本情報技術者 勉強時間の目安|社会人・学生・未経験別の合格モデル
基本情報技術者試験の合格に必要な勉強時間を、社会人・学生・IT未経験の3パターン別に分解。週次の時間配分例と科目A/Bの配分指針を実例で解説します。
基本情報技術者 科目B完全対策|疑似言語・アルゴリズムを確実に解く方法
基本情報技術者試験の科目Bは疑似言語とアルゴリズムが中心。トレース力の鍛え方・頻出パターン(ソート・再帰・リスト)の解法を、AIコパイロット活用法とともに解説します。
基本情報のアルゴリズムが苦手な人の克服ステップ|挫折せずに科目Bを突破する
基本情報技術者試験の科目Bで多くの受験者が挫折するアルゴリズム分野。苦手意識を解消し、確実に得点できるようになるための学習ステップと心の作り方を解説します。
基本情報技術者試験 出題傾向の最新分析|2024〜2025年で増えた論点と捨て論点
基本情報技術者試験の直近2年の出題傾向を分析し、増加している新論点・減少している論点・捨てて良い論点を整理。学習計画の優先度付けに活用できます。