応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
次回試験日:2025年4月20日(あと1日)

応用情報技術者試験 令和6年春 午前問8 解説付き過去問

問題

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

正解

解説

本問題は、同一のメモリ空間内で一部が重なった領域へのデータ転送方法に関するものである。
アドレス領域が重複する場合、転送順序(昇順または降順)を正しく選択しなければ、転送元データが途中で上書きされ、転送が失敗する。

具体的には、アドレス1001~1004のデータをアドレス1003~1006に転送する。ここで注目すべきは、転送元(1001~1004)と転送先(1003~1006)の範囲が一部(1003,1004)重なっている点である。

  • 昇順転送(方向フラグ=0)での問題点
    アドレスの小さい方(1001)から順に転送すると、以下のような問題が起きる。

    1. 1001 → 1003への転送で、1003の元データが消える。

    2. 次に1002 → 1004への転送で、1004の元データが消える。この時点で、元々1003と1004にあったデータが失われるため、正しく転送が完了しない。

  • 降順転送(方向フラグ=1)での正しい動作
    アドレスの大きい方(1004)から順に転送すると、次のようにデータは安全に転送される。

    1. 1004 → 1006への転送。1006にデータが移動し、元のデータは失われない。

    2. 1003 → 1005への転送。同様に安全にデータが移動する。

    3. 続いて1002 → 1004、1001 → 1003と順番に転送が進み、元データを失うことなく、全ての転送が正しく行われる。

転送前後の状態を表形式で示すと以下の通りである。

【転送前】
アドレス100110021003100410051006
データAAABBBCCCDDD------

【降順転送後】
アドレス100110021003100410051006
データ------AAABBBCCCDDD

このことから、転送が正しく行われるための適切なパラメータは以下となる。

  • 転送元開始アドレス:1004

  • 転送先開始アドレス:1006

  • 方向フラグ:1(降順)

  • 転送語数:4