図のメモリマップで, セグメント2が解放されたとき, セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。1回のメモリアクセスは4バイト単位で行い, 読取り,書込みがそれぞれ 30 ナノ秒とすると,動的再配置をするために必要なメモリアクセス時間は合計何ミリ秒か。ここで, 1k バイトは 1,000 バイトとし,動的再配置に要する時間以外のオーバヘッドは考慮しないものとする。
セグメント1 | セグメント2 | セグメント3 | 空き |
500kバイト | 100kバイト | 800kバイト | 800kバイト |
ア 1.5
イ 6.0
ウ 7.5
エ 12.0
解説を読む
正解:エ
解説:
セグメント2を開放し空き領域を連続領域にするということは動的再配置完了後のメモリマップは以下のとおりとなります。
セグメント1 | セグメント3 | 空き |
500kバイト | 800kバイト | 900kバイト |
このときセグメント3がセグメント2のあった場所にそのまま移動したと考えることができるので移動した容量は800kバイトとなります。
読取りと書込みにそれぞれ30ナノ秒掛かるので1回のリードライトで60ナノ秒掛かります。また、1回のメモリアクセスは4バイト単位で行うとありますので800kバイトのデータを移動するために必要なアクセス回数は次式で計算できます。
800kバイト÷4バイト=800,000バイト÷4バイト=200,000回
前述のとおり1回のリードライトには60ナノ秒掛かりますので移動に必要な時間は次式で求めることができます。
200,000回×60ナノ秒=12,000,000ナノ秒=12,000マイクロ秒=12ミリ秒
上記より12.0ミリ秒のエが正解となります。
解説を閉じる
コメント