問題プレビューID: c56b4375

問 18

図のメモリマップで、セグメント 2 が解放されたとき、セグメントを移動(動的再配置)し、分散する空き領域を集めて一つの連続領域にしたい。1 回のメモリアクセスは 4 バイト単位で行い、読取り、書込みがそれぞれ 30 ナノ秒とすると、動的再配置をするのに必要なメモリアクセス時間は合計何ミリ秒か。ここで、1k バイトは 1,000 バイトとし、動的再配置に要する時間以外のオーバヘッドは考慮しないものとする。

+-----------+
| セグメント1 | 500k バイト
+-----------+
| セグメント2 | 100k バイト (解放)
+-----------+
| セグメント3 | 800k バイト
+-----------+
|   空き     | 800k バイト
+-----------+
解説

セグメント 2 が解放されると、その場所(100k)が空きになります。 セグメント 3(800k)をセグメント 1 の直後に移動させて、空き領域をつなげる必要があります。 移動させるデータ量は、セグメント 3 の 800k バイト です。

  1. アクセス回数の計算: 1 回のアクセスで 4 バイト処理できます。 800,000 バイト÷4=200,000800,000 \text{ バイト} \div 4 = 200,000 回の「読取り」と「書込み」が必要です。

  2. 時間の計算: 1 回のセット(読取り+書込み)にかかる時間は 30+30=60 ナノ秒30 + 30 = 60 \text{ ナノ秒} です。 200,000 回×60×10−9 秒=12,000,000×10−9 秒200,000 \text{ 回} \times 60 \times 10^{-9} \text{ 秒} = 12,000,000 \times 10^{-9} \text{ 秒} =12×10−3 秒= 12 \times 10^{-3} \text{ 秒} =12 ミリ秒= 12 \text{ ミリ秒}

したがって、正解は「エ」です。