2013-03-28 10 views
6

私は、Silberschatz、Galvin、およびGagneによって、Operating System Conceptsからオペレーティングシステムを研究しています。 229ページPetersonのソリューションは、最新のCPUアーキテクチャで正しく動作しますか?

、本の状態これは約Petersons Solution

ため、現代のコンピュータ・アーキテクチャは、ロードおよびストアなどの基本的な機械 語命令を実行する方法のため、ピーターソンのソリューションをすることを保証 はありませんそのようなアーキテクチャでは正しく動作します。

私はWikipediaにこれを見て、説明に最も近いように思われる。この発見:

最近のほとんどのCPUは、メモリが実行効率を向上させるためにアクセスする順序を変更。このようなプロセッサは、通常、メモリバリア命令を介して、メモリアクセスのストリーム内で順序付けを強制する何らかの方法を常に与える。メモリアクセスを再順序付けするプロセッサ上でのPeterson'sおよび関連するアルゴリズムの実装は、通常、シーケンシャルオペレーションを間違った順序で起こさないように正しく動作させるために、そのようなオペレーションの使用を必要とする。

これが何を意味しているのか、これが答えでさえ理解できない場合は、メモリアクセスの順序を変更することができます。

なぜ、ピーターソンのソリューションは近代的なアーキテクチャでは動作しないのですか?

+1

ピーターソンのソリューションとは何ですか?どのような問題に解決策がありますか?あなたの質問がStackOverflowに属しているかどうかわからない、それはソースコードに関連していないようだ。 –

+1

@BasileStarynkevitchウィキペディアのページにリンクしました。オペレーティングシステムの概念については、いくつかの質問があります。また、ソフトウェアアルゴリズムの質問は[faq]のようにトピック上にあります。 – asheeshr

+0

この問題についての私の理解は、ロック解除が早すぎる場合と同じです。2番目のプロセスにはアクセス権が与えられますが、最初のプロセスにはまだデータを書き込む(または読み込む)ことができます。これにより、2番目のプロセスで古いデータが使用される可能性があります。 – Moshe

答えて

2

CPUが1つのシステムでは、プログラムの独自の動作がプログラムの順序で観察されるため、Petersonのアルゴリズムが動作することが保証されています。

複数のCPUを持つシステムでは、あるCPUで発生するイベントのプログラム順序が別のCPUで異なると認識されるため、アルゴリズムが機能しなくなることがあります。

クリティカルセクション(まだ別のスレッドで使用中)に早期に入り込み、クリティカルセクションから早期に終了することがあります(共有リソースの作業がまだ終了していない場合)。

この理由から、CPU内部で発生するイベントの順序が同じ外部であることを確認する必要があります。メモリバリアにより、このシリアル化が保証されます。

+0

どのような並べ替えが動作しなくなるのですか? – sudeepdino008

+1

@ sudeepdino008メモリリード/ライトの並べ替え。w.r.t.他のメモリ読み出し/書き込み。システムに2つ以上のCPUがあり、メモリ読み出し/書き込みの順序変更が制約されていない(例えば、メモリバリア/フェンス)場合、その命令に依存する特定のアルゴリズムが壊れる。ピーターソンのアルゴリズムが破られる。 –

関連する問題