オペレーティングシステム(全107問中93問目)
No.93解説へ
各タスクがタスク間共有変数を更新するときに,タスク間の同期制御を行わないと思わぬ結果を招くことがある。タスク間共有変数xの初期値が3のとき,タスクAが代入文 x=x+x を実行し,タスクBが代入文 x=x×xを実行すると,最終的なxの値が12となるのは,どの順番で実行されたときか。ここで,各代入文はそれぞれ次の四つの部分に分けて処理される。
出典:平成17年秋期 問29
- 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
正解 イ問題へ
広告
解説
xの初期値が3なので、それぞれの順番で実行して最終的にx=12になるものを見つけます。
- a1:e←3
- a2:f←3
- b1:h←3
- b2:i←3
- a3:3+3=6,g←6
- a4:x←6
- b3:3×3=9,j←9
- b4:x←9
- 正しい。
- a1:e←3
- b1:h←3
- b2:i←3
- b3:3×3=9,j←9
- b4:x←9
- a2:f←9
- a3:3+9=12,g←12
- a4:x←12
- b1:h←3
- a1:e←3
- a2:f←3
- a3:3+3=6、g←6
- a4:x←6
- b2:i←6
- b3:3×6=18,j←18
- b4:x←18
- b1:h←3
- b2:i←3
- b3:3×3=9,j←9
- a1:e←3
- a2:f←3
- a3:3+3=6,g←6
- a4:x←6
- b4:x←9
広告