平成29年度 秋期 午前 問19
ソフトウェア
動的再配置に関する問題
図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。1回のメモリアクセスは4バイト単位で行い,読取り,書込みがそれぞれ30ナノ秒とすると,動的再配置をするために必要なメモリアクセス時間は合計何ミリ秒か。ここで,1k バイトは1,000バイトとし,動的再配置に要する時間以外のオーバヘッドは考慮しないものとする。
図(メモリを左から右へ並べた帯の図):
│ セグメント1 │ セグメント2 │ セグメント3 │ 空き │ │ 500k バイト │ 100k バイト │ 800k バイト │ 800k バイト │
- ア1.5
- イ6.0
- ウ7.5
- エ12.0
答えと解説を見る
✓ これが正解エ12.0
解説
八十万バイトを四バイトずつ読み書きするので、十二ミリ秒です。
二つ目の区画が空くと、その後ろの区画を前へ詰めます。動かすのは、三つ目の八十万バイトでした。一つ目は動かさず、空きは後ろへ集まります。触れる単位は四バイトなので、二十万回の出し入れになりました。一回ごとに読みと書きがあり、それぞれ三十ナノ秒です。合わせて六十ナノ秒なので、二十万を掛けました。千二百万ナノ秒になり、十二ミリ秒と出ます。だから十二を挙げた肢が当たり、動的再配置にかかる時間でした。一・五を挙げた肢は、動かす量を十万バイトと見た形です。空いた区画の大きさと取り違えました。六・〇を挙げた肢は、読みか書きの片方だけを数えた形になります。七・五を挙げた肢のほうは、五十万バイトぶんと数えました。動かす量を先に決めます。読みと書きを両方数えます。三つとも、動かす量か往復のどちらかを取り違えています。
ほかの選択肢はなぜ違うのか
- ア1.5:一・五ミリ秒を挙げています。十万バイトを動かした場合の値でした。空いた区画の大きさが、ちょうど十万です。ところが動かすのは、その後ろの区画でした。八十万バイトです。取り違えています。三つ目の区画を運びます。
- イ6.0:六・〇ミリ秒を挙げています。正しい値の、ちょうど半分になりました。読みか書きの、片方だけを数えた形です。けれども動かすには、両方が必要です。読んでから書きました。往復を数えません。読みも書きも必要です。半分の値でした。
- ウ7.5:七・五ミリ秒を挙げています。五十万バイトを動かした場合の値でした。一つ目の区画の大きさが、ちょうど五十万です。ところが一つ目は動かしません。前に詰まっています。動かす相手が違いました。八十万バイトのほうです。
出典:平成29年度 秋期 基本情報技術者試験 午前 問19
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)