修了試験 2024-01-28実施分 基本情報技術者試験 問13
図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。 1回のメモリアクセスは4バイト単位で行い,読取り,書込みがそれぞれ30ナノ秒とすると,動的再配置をするために必要なメモリアクセス時間は合計何ミリ秒か。 ここで,1kバイトは1,000バイトとし,動的再配置に要する時間以外のオーバヘッドは考慮しないものとする。 セグメント1|セグメント2|セグメント3|空き 500kバイト|100kバイト|800kバイト|800kバイト
正答4
解説
正解は4です。 動的再配置(コンパクション)に必要なメモリアクセス時間を計算する問題です。 メモリマップは、先頭からセグメント1(500kバイト)、セグメント2(100kバイト)、セグメント3(800kバイト)、空き(800kバイト)の順です。 セグメント2が解放されると、セグメント1と3の間に100kバイトの空きができます。 空きを一つにまとめるには、セグメント3を100kバイト分前に詰めて移動させます。 【計算】 移動するデータ量は、セグメント3の800kバイト=800,000バイトです。 1回のアクセスは4バイト単位なので、読取り回数は800,000÷4=200,000回です。 読み取ったデータを書き込むので、書込み回数も200,000回です。 1回の読取りと書込みを合わせた時間は、30+30=60ナノ秒です。 合計時間は、200,000×60ナノ秒=12,000,000ナノ秒です。 12,000,000ナノ秒=12ミリ秒なので、答えは12.0ミリ秒です。 【選択肢別解説】 1:× 1.5ミリ秒は、セグメント2の100kバイト分を読取りと書込みで処理した時間(25,000×60ナノ秒)です。 移動すべきなのはセグメント3の800kバイトです。 2:× 6.0ミリ秒は、800kバイトの読取りだけ、または書込みだけの時間(200,000×30ナノ秒)です。 移動には読取りと書込みの両方が必要です。 3:× 7.5ミリ秒は、セグメント1の500kバイトを読取りと書込みで処理した時間(125,000×60ナノ秒)です。 セグメント1は移動する必要がありません。 4:○ セグメント3の800kバイトを4バイト単位で読み取り、書き込むのに必要な時間は12.0ミリ秒です。 【ポイント】 コンパクションでは、解放された領域より後ろにあるセグメントだけを移動します。 移動は「読取り」と「書込み」の2回のアクセスで1単位になる点を忘れないようにしましょう。まとめて解く
修了試験 2024-01-28実施分を通しで解く(60問)→