応用情報技術者 2016年 春期 午前2 問06
問題文
流れ図に示す処理の動作の記述として、適切なものはどれか。ここで、二重線は並列処理の同期を表す。

選択肢
ア:ABC 又は ACBを実行してデッドロックになる。
イ:AB 又は ACを実行してデッドロックになる。
ウ:Aの後にBC 又は CB, BC 又は CB, と繰り返して実行する。(正解)
エ:Aの後にBの無限ループ又はCの無限ループになる。
流れ図に示す処理の動作の記述【午前2 解説】
要点まとめ
- 結論:この流れ図は、Aの処理後にBとCが並列で実行され、両者の同期を取りながら繰り返す動作を示しています。
- 根拠:二重線は並列処理の同期を表し、BとCはそれぞれ独立したループを持ちつつ、同期点で待ち合わせを行っています。
- 差がつくポイント:デッドロックの有無や処理の順序を正確に理解し、並列処理の同期機構を正しく読み解くことが重要です。
正解の理由
選択肢ウは「Aの後にBCまたはCBの順で並列処理が繰り返される」と述べており、流れ図の構造と一致します。
Aの処理後、BとCは並列に開始し、二重線の同期点で互いの完了を待つため、どちらが先に処理を終えても同期が取れる状態です。
また、BとCはそれぞれ独立した無限ループを持ち、同期点を経て繰り返し実行されるため、処理は継続的に行われます。
このため、デッドロックは発生せず、選択肢ウが正解となります。
Aの処理後、BとCは並列に開始し、二重線の同期点で互いの完了を待つため、どちらが先に処理を終えても同期が取れる状態です。
また、BとCはそれぞれ独立した無限ループを持ち、同期点を経て繰り返し実行されるため、処理は継続的に行われます。
このため、デッドロックは発生せず、選択肢ウが正解となります。
よくある誤解
- 並列処理の同期を「単なる順序実行」と誤解し、デッドロックが起きると考えることがあります。
- BとCのループが独立しているため、どちらか一方だけが無限ループになると誤認することがあります。
解法ステップ
- 流れ図の開始からAの処理までの流れを確認する。
- Aの処理後に二重線で示された並列処理の開始を理解する。
- BとCの処理が独立したループを持ち、同期点で待ち合わせていることを把握する。
- 並列処理の同期がデッドロックを防ぐ仕組みであることを確認する。
- 選択肢の記述と流れ図の動作を照合し、最も適切なものを選ぶ。
選択肢別の誤答解説
- ア: 「ABC又はACBを実行してデッドロックになる」は誤り。BとCは並列で動作し、同期点で待ち合わせるためデッドロックは発生しません。
- イ: 「AB又はACを実行してデッドロックになる」も誤り。BとCは並列処理であり、単独での順序実行ではありません。
- ウ: 正解。Aの後にBとCが並列で処理され、同期しながら繰り返す動作を正しく表現しています。
- エ: 「Aの後にBの無限ループ又はCの無限ループになる」は誤り。BとCは並列にループし、どちらか一方だけが無限ループになるわけではありません。
補足コラム
並列処理における「同期」は、複数の処理が特定のポイントで互いの完了を待つ仕組みです。
これにより、処理の整合性を保ちつつ、デッドロックを回避できます。
二重線はフローチャートでよく使われる「同期バー」を示し、並列処理の開始と終了を明確に表現します。
これにより、処理の整合性を保ちつつ、デッドロックを回避できます。
二重線はフローチャートでよく使われる「同期バー」を示し、並列処理の開始と終了を明確に表現します。
FAQ
Q: 並列処理の同期とは何ですか?
A: 複数の処理が特定のポイントで互いの完了を待ち合わせ、処理の整合性を保つ仕組みです。
A: 複数の処理が特定のポイントで互いの完了を待ち合わせ、処理の整合性を保つ仕組みです。
Q: デッドロックはなぜ発生しないのですか?
A: BとCは同期点で互いの完了を待つため、相互にリソースを奪い合う状態(デッドロック)になりません。
A: BとCは同期点で互いの完了を待つため、相互にリソースを奪い合う状態(デッドロック)になりません。
関連キーワード: 並列処理、同期、デッドロック、フローチャート、無限ループ、プロセス制御

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

