令和6年度春期 応用情報技術者試験 午前 問8

分野:コンピュータ構成要素|実際に出題されたIPA過去問題

同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつCPUがある。図のようにアドレス1001から1004のデータをアドレス1003から1006に転送するとき,指定するパラメータとして適切なものはどれか。ここで,転送は開始アドレスから1語ずつ行われ,方向フラグに0を指定するとアドレスの昇順に,1を指定するとアドレスの降順に転送を行うものとする。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  転送元の開始アドレス 1001,転送先の開始アドレス 1003,方向フラグ 0,転送語数 4
  2.  転送元の開始アドレス 1001,転送先の開始アドレス 1003,方向フラグ 1,転送語数 4
  3.  転送元の開始アドレス 1004,転送先の開始アドレス 1006,方向フラグ 0,転送語数 4
  4.  転送元の開始アドレス 1004,転送先の開始アドレス 1006,方向フラグ 1,転送語数 4
解答・解説を見る

正解:エ

AI解説

転送元と転送先のアドレス範囲(1001~1004と1003~1006)が重なっており、かつ転送先が転送元より高いアドレス側にずれているため、アドレスの昇順(先頭から)に転送すると、まだコピーしていない元データを上書きしてしまう。これを避けるには、アドレスの高い方(末尾)から低い方へ向かって降順に転送する必要があり、転送元の開始(基準)アドレスを最大値の1004、転送先を1006、方向フラグを1(降順)に指定する。 ア: 昇順(方向フラグ0)で転送すると、1003番地に書き込んだ時点でまだコピーしていない1003番地の元データを上書きしてしまい、正しく転送できない。 イ: 転送語数は4で正しいが、開始アドレスの取り方が誤っており、方向フラグ1(降順)であっても開始アドレスが1001・1003では正しい範囲を降順に転送できない。 ウ: 方向フラグが0(昇順)になっており、これでは転送先が転送元と重なる範囲を上書きしてしまうため、正しく転送できない。 エ: 正しい。転送先が転送元より高位アドレス側に重なっているため、降順(方向フラグ1)で、かつ両範囲の最終アドレスである1004→1006を開始点として4語を転送すれば、上書き前に必要な元データを退避しながら正しく転送できる。 💡 重複するメモリ領域をコピーする問題では、「転送先が転送元より後ろ(高位アドレス)にあるときは末尾から降順にコピーする」という鉄則を覚えておくと、方向フラグと開始アドレスの組合せをすぐに判断できる。

出典:令和6年度 春期 応用情報技術者試験 午前 問8 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「コンピュータ構成要素」分野の攻略ポイント

プロセッサ・メモリ・キャッシュ・入出力・IoTデバイスが対象です。実効アクセス時間やCPI(命令あたりクロック数)の計算は毎年の定番で、公式さえ覚えれば短時間で確実に1問確保できます。

コンピュータ構成要素の攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(コンピュータ構成要素)の過去問