過去問解きまくり研究所 ホーム

平成27年度 秋期 午前 問18

ソフトウェア

セグメントに関する問題

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

図(書き起こし): メモリマップの図(絵)。左から右へ1本の帯が4つに区切られており,各区画の下に大きさが刷られています。

区画(左から)セグメント1セグメント2セグメント3空き
大きさ500kバイト100kバイト800kバイト800kバイト
答えと解説を見る

✓ これが正解エ12.0

解説

800kバイトを4バイトずつ読み書きして12ミリ秒です。

空き領域を1つにまとめるには、解放された区画の後ろにあるものを前へ詰めます。ここで動かす対象は、解放された区画そのものではなく、その後ろに残っているセグメントのほうです。図から読み取れる大きさは800kバイト、つまり800,000バイトになります。アクセスは4バイト単位なので、回数は200,000回です。1回につき元の場所から読み、移した先へ書くので、読取りと書込みの両方がかかります。30ナノ秒ずつで合わせて60ナノ秒です。200,000回を掛けると12,000,000ナノ秒、言い換えると12ミリ秒になります。確かめる軸は2つです。1つ目は、動かす量をどの区画から取るか。2つ目は、1回のアクセスに読みと書きの両方を数えているかです。

ほかの選択肢はなぜ違うのか

出典:平成27年度 秋期 基本情報技術者試験 午前 問18(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)