平成22年度 春期 午前 問19
システム構成要素
局所参照性に関する記述
プログラムの局所参照性に関する記述のうち,適切なものはどれか。
- ア繰り返し呼ばれる手続をサブルーチン化すると,サブルーチンの呼出しと復帰のために分岐命令が増えるので,必ず局所参照性は低下する。
- イ同様の処理を反復する場合,ループやサブルーチンを用いずにプログラムにコードを繰り返して記述する方が,局所参照性は高くなる。
- ウ分岐命令などによって,メモリを短い時間に広範囲に参照するほど,局所参照性は高くなる。
- エループによる反復実行のように,短い時間にメモリの近接した場所を参照するプログラムの局所参照性は高くなる。
答えと解説を見る
✓ これが正解エループによる反復実行のように,短い時間にメモリの近接した場所を参照するプログラムの局所参照性は高くなる。
解説
短い時間に近い場所を繰り返し触ると高くなります。
局所参照性とは、プログラムが短い時間のうちに狭い範囲を繰り返し触る性質のことです。触った場所をすぐにまた触ることを時間的な側、触った場所のすぐ隣を続けて触ることを空間的な側と呼び分けておくと、記述の仕分けが楽になります。設問はこの性質について適切な記述を選ぶ向きなので、狭い範囲へ集まる書き方を高いと言っているものを探します。正解は、ループによる反復実行のように、短い時間にメモリの近接した場所を参照するプログラムの局所参照性は高くなる、という記述です。繰返しの中では同じ数十バイトの命令と同じ変数を何度も触るので時間的な側が高く、配列を順になぞるような処理では隣を続けて触るので空間的な側も高くなります。キャッシュメモリや仮想記憶のページングは、この性質があることを前提として設計されているため、局所参照性の高いプログラムは同じ装置でも速く動きます。逆にこの性質が崩れると、ページの入替えばかりが起きて処理が進まなくなります。
ほかの選択肢はなぜ違うのか
- ア繰り返し呼ばれる手続をサブルーチン化する…:繰り返し呼ばれる処理を 1 か所へまとめれば、実行中に触るアドレスの範囲はむしろ狭まります。分岐の増加という一面だけを取り上げて必ず下がると言い切っており、その言い切りの部分から崩れます。
- イ同様の処理を反復する場合,ループやサブル…:同じ処理を何本も書き並べると、命令の置かれる範囲がそのぶん広がってしまいます。まとめておけば狭い範囲を何度も回れるので、この記述は性質の向きをちょうど取り違えています。
- ウ分岐命令などによって,メモリを短い時間に…:触る場所が広く散らばるほど、狭い範囲へ集まっているとは言えなくなります。散らばりが大きいときは低いと判断するのが決まりなので、この記述は性質の定義そのものと反対のことを述べています。
出典:平成22年度 春期 応用情報技術者試験 午前 問19
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)