密結合マルチプロセッサシステムについて

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
情報太郎さん  
(No.1)
密結合マルチプロセッサシステムでは、各タスクはどのプロセッサでも実行できるので、タスク間で同期をとる機能が必要になると書いていたのですが、なぜタスク間で同期を取る必要があるのですか?ご教授のほどお願い致します。
2019.07.09 13:58
双葉さん 
(No.2)
処理のタイミングによって実行結果が異なるのを防ぐためです。
密結合マルチプロセッサシステムは、主記憶装置(メモリ)を各プロセッサが
共有するシステムです。

例えば、主記憶装置上のある番地に6(10)という数値があるとします。
これに2を加算してから、2で除算する処理をするとします。
同期がきちんととれているときの処理は
(6+ 2) / 2 = 4 です。

しかし、どちらかのプロセッサで前工程の処理が遅れることがあります。
同期を取らないということは、前の工程が終わっているかを確認しないで
処理をすることを意味します。処理の順番が入れ替わると
6 / 2 + 2 = 5
 となり、正しい処理ができていないことになります。

-----余談
プロセッサ単位ではきちんと同期できていても、プログラミングの並列処理でよく
発生するミスです。特定の環境でしか発生せず、再現が難しくデバックしにくい
など厄介なバグです。設計段階でシーケンス図を書くなどして、バグが入り込む
余地を潰して対策します。
2019.07.09 17:13
情報太郎さん  
(No.3)
同期する意味が理解できました!
ありがとうございました!
2019.07.10 09:44

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop