平成27年度 秋期 基本情報技術者試験 午前 問18
テクノロジ/ソフトウェア図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。1回のメモリアクセスは4バイト単位で行い,読取り,書込みがそれぞれ30ナノ秒とすると,動的再配置をするのに必要なメモリアクセス時間は合計何ミリ秒か。ここで,1kバイトは1,000バイトとし,動的再配置に要する時間以外のオーバヘッドは考慮しないものとする。 セグメント1:500kバイト,セグメント2:100kバイト,セグメント3:800kバイト,空き:800kバイト (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成27年度 秋期 基本情報技術者試験 午前 問18
- ア1.5
- イ6.0
- ウ7.5
- エ12.0
正解:エ
解説
セグメント2が解放されると,空き領域はセグメント2の位置(100kバイト)とセグメント3の後ろ(800kバイト)の2か所に分散します。これを一つの連続領域にまとめるには,セグメント3(800kバイト)をセグメント2の位置まで前方に詰めて移動する必要があります。移動は4バイト単位の読取り(30ナノ秒)と書込み(30ナノ秒)の組で行われるため,1回の移動に60ナノ秒かかります。800kバイト÷4バイト=200,000回の移動が必要なので,合計時間は200,000×60ナノ秒=12,000,000ナノ秒=12.0ミリ秒になります。
選択肢ごとの解説
- ア誤り。移動するデータ量やアクセス回数を大きく少なく見積もった場合の値です。
- イ誤り。読取りと書込みの片方だけを計算に入れるなど,アクセス時間の一部を見落とした場合の値です。
- ウ誤り。移動対象のデータ量を800kバイトより少なく見積もった場合などに得られる値です。
- エ正しい。800kバイトのセグメント3を4バイト単位(読取り30ナノ秒+書込み30ナノ秒=60ナノ秒)で200,000回移動するので,合計12.0ミリ秒になります。