令和6年度 春期 応用情報技術者試験 午前 問8
テクノロジハードウェア
この問題は2024(R6)春 応用情報技術者 午前に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつCPUがある。図のようにアドレス1001から1004のデータをアドレス1003から1006に転送するとき,指定するパラメータとして適切なものはどれか。ここで,転送は開始アドレスから1語ずつ行われ,方向フラグに0を指定するとアドレスの昇順に,1を指定するとアドレスの降順に転送を行うものとする。

図の説明テキスト
「実行前」と「実行後」のメモリアドレスの状態を示す図。左側に「実行前」としてアドレス1000から1007までのメモリ領域が示され、右側に「実行後」として同じくアドレス1000から1007までの領域が示されている。実行前のアドレス1001から実行後のアドレス1003へ、1002から1004へ、1003から1005へ、1004から1006へ、それぞれデータの転送を示す右向きの矢印が引かれている。
解答・解説を読む
正解: 選択肢エ
正解の根拠
今回の問題では、転送元の領域(アドレス )と転送先の領域(アドレス )が、一部(アドレス 、)で 重複 しています。
このように領域が重なっている場合、転送順序を誤ると未転送のデータが上書きされてしまい、データが破壊される現象が起きます。
もし、アドレスの昇順(方向フラグを0)で転送しようとした場合、以下の順序で処理が進みます。
- のデータを に転送(この時点で本来 にあったデータが失われます)
- のデータを に転送(この時点で本来 にあったデータが失われます)
- のデータを に転送(手順1で書き換えられた のデータが転送されてしまいます)
- のデータを に転送(手順2で書き換えられた のデータが転送されてしまいます)
これを防ぐためには、アドレスの降順(大きい方から順に)転送を行う必要があります(方向フラグ:1)。
降順での処理は以下のようになります。
- のデータを に転送
- のデータを に転送
- のデータを に転送
- のデータを に転送
このように、元のデータを破壊することなく正しくブロック転送が完了します。
したがって、指定するパラメータは以下のようになります。
- 転送元の開始アドレス: 一番大きい 1004
- 転送先の開始アドレス: 一番大きい 1006
- 方向フラグ: 降順を示す 1
- 転送語数: データ数の 4
各選択肢の解説
- ア: 方向フラグ0(昇順)を指定しているため、前述のとおり未転送であるアドレス 、 のデータが転送前に上書きされ、正しく転送できません。
- イ: 方向フラグ1(降順)を指定していますが、開始アドレスが と に設定されているため、アドレスが小さくなる方向()へ転送されてしまい、目的のデータを転送できません。
- ウ: 方向フラグ0(昇順)を指定していますが、開始アドレスが と に設定されているため、アドレスが大きくなる方向()へ転送されてしまい誤りです。
- エ: 正解です。降順の処理で適切な開始アドレスと転送語数が指定されており、データを破壊することなく転送できます。