平成19年 春期 ソフトウェア開発技術者 午前 問15

処理1と処理2が交互に繰り返し実行される流れ図はどれか。
ここで、二重線は並列処理の同期を表す。

 ア    イ  
 ウ    エ  


答え イ


解説

 ア  開始からの処理は“処理1→処理2”と行われるが、処理2(右)側は戻った上の二重線で同期待ちをするが、処理1(左)側はここに来ないので、処理2側は一番上の二重線で同期待ちで止まってしまう。また、処理1側は真ん中の二重線で同期待ちで止まってしまう。
 処理としては“開始→処理1→処理2→処理1(デッドロック)”である。
 イ  開始のあと処理は“処理1→処理2”と行われ、その後も処理2(右)側は真ん中の二重線で処理1(左)側を待ち、処理1側は下の二重線で処理2側を待つので、処理としては“開始→処理1→処理2→処理1→処理2→…→処理1→処理2”になる。
 ウ  開始して上の二重線で同期した後、処理1が行われ、処理2側は下の二重線で処理1側を待つ。処理1を行って下の二重線に達し同期すると、処理1と処理2が行われる。
 このとき、処理1と処理2を行う順序としてどちらが先に行われるかの保証がないので、処理1と処理2が交互に行われるかわからない。
 エ  開始して上の二重線で同期した後、処理1と処理2がどちらが行われるかわからない。処理1と処理2が行われた後。下の二重線で同期を行うが、その後も戻った先でも、処理1と処理2がどちらが行われるかわからない。


キーワード
・並列処理の同期

キーワードの解説
  • 並列処理の同期
    2つの処理シーケンスを実行するとき、同期の箇所まで処理が進んだ処理シーケンスは、他の処理シーケンスが同期箇所に来るまで待つ動作をすることである。
    例としては、金融機関のATMで出金時に通帳の記帳を行うと、記帳が終わるまで紙幣口を開けるのと、カードの返却を待つような処理である。

もっと、「並列処理」について調べてみよう。

戻る 一覧へ 次へ