基本情報技術者平成17年秋期 午前問29

問29

各タスクがタスク間共有変数を更新するときに,タスク間の同期制御を行わないと思わぬ結果を招くことがある。タスク間共有変数xの初期値が3のとき,タスクAが代入文 x=x+x を実行し,タスクBが代入文 x=x×xを実行すると,最終的なxの値が12となるのは,どの順番で実行されたときか。ここで,各代入文はそれぞれ次の四つの部分に分けて処理される。
29.png/image-size:387×107
  • a1→a2→b1→b2→a3→a4→b3→b4
  • a1→b1→b2→b3→b4→a2→a3→a4
  • b1→a1→a2→a3→a4→b2→b3→b4
  • b1→b2→b3→a1→a2→a3→a4→b4
  • [出題歴]
  • 基本情報技術者 H14春期 問31

分類

テクノロジ系 » ソフトウェア » オペレーティングシステム

正解

解説

xの初期値が3なので、それぞれの順番で実行して最終的にx=12になるものを見つけます。
    1. a1:e←3
    2. a2:f←3
    3. b1:h←3
    4. b2:i←3
    5. a3:3+3=6,g←6
    6. a4:x←6
    7. b3:3×3=9,j←9
    8. b4:x←9
    以上の流れで、xは9になります。
  • 正しい。
    1. a1:e←3
    2. b1:h←3
    3. b2:i←3
    4. b3:3×3=9,j←9
    5. b4:x←9
    6. a2:f←9
    7. a3:3+9=12,g←12
    8. a4:x←12
    以上の流れで、xは12になります。
    1. b1:h←3
    2. a1:e←3
    3. a2:f←3
    4. a3:3+3=6、g←6
    5. a4:x←6
    6. b2:i←6
    7. b3:3×6=18,j←18
    8. b4:x←18
    以上の流れで、xは18になります。
    1. b1:h←3
    2. b2:i←3
    3. b3:3×3=9,j←9
    4. a1:e←3
    5. a2:f←3
    6. a3:3+3=6,g←6
    7. a4:x←6
    8. b4:x←9
    以上の流れで、xは9になります。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop