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

選択肢
ア:ABC又はACBを実行してデッドロックになる。
イ:AB又はACを実行してデッドロックになる。
ウ:Aの後にBC又はCB,BC又はCB,と繰り返して実行する。(正解)
エ:Aの後にBの無限ループ又はCの無限ループになる。
流れ図に示す処理の動作の記述【午前2 解説】
要点まとめ
- 結論:この流れ図は「Aの後にBとCが並列で実行され、BとCが交互に繰り返し動作する」ことを示しています。
- 根拠:二重線は並列処理の同期を表し、BとCは並列に動作しつつ、それぞれのループで上段に戻る構造があるため、交互に繰り返す動作となります。
- 差がつくポイント:デッドロックの有無や並列処理の同期の理解、ループ構造の読み取りが重要で、単純な順序実行と混同しないことが合格の鍵です。
正解の理由
選択肢ウは、Aの後にBとCが並列に実行され、BとCがそれぞれループして上段の同期点に戻る動作を正確に表しています。
図の二重線は同期を示し、BとCは独立したループを持ちながらも同期点で待ち合わせるため、交互に繰り返す動作が成立します。
他の選択肢はデッドロックや無限ループの誤解を含み、図の同期構造とループ構造を正しく読み取れていません。
図の二重線は同期を示し、BとCは独立したループを持ちながらも同期点で待ち合わせるため、交互に繰り返す動作が成立します。
他の選択肢はデッドロックや無限ループの誤解を含み、図の同期構造とループ構造を正しく読み取れていません。
よくある誤解
- 並列処理の同期を無視して、BとCが独立に無限ループすると誤解しがちです。
- ループ構造を単純な順序処理と混同し、デッドロックが発生すると誤認することがあります。
解法ステップ
- 流れ図の開始からAの処理を確認する。
- Aの後に二重線で区切られた並列処理のBとCがあることを把握する。
- BとCはそれぞれ独立したループ構造を持ち、下段の二重線から上段の二重線に戻る形でループしていることを確認。
- 二重線は同期を示し、BとCは同期点で待ち合わせるため、交互に繰り返す動作になると理解。
- 選択肢の内容と照合し、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は同期点で待ち合わせるため、互いにリソースを奪い合う状態にならず、処理が進行可能だからです。
関連キーワード: 並列処理、同期、ループ構造、デッドロック、流れ図、制御構造

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

