9

Silberschatz、Galvin、および Gagne によるオペレーティング システムの概念からオペレーティング システムを研究しています。

本の 229 ページで、 Petersons Solutionについて次のように述べています。

最新のコンピューター アーキテクチャがロードやストアなどの基本的な機械語命令を実行する方法のため、Peterson のソリューションがそのようなアーキテクチャで正しく機能するという保証はありません。

ウィキペディアでこれを調べたところ、説明に最も近いと思われるこれが見つかりました。

最近のほとんどの CPU は、実行効率を向上させるためにメモリ アクセスの順序を変更します。このようなプロセッサは、通常、メモリ バリア命令を介して、メモリ アクセスのストリーム内で順序付けを強制する何らかの方法を必ず提供します。メモリ アクセスの順序を変更するプロセッサでのピーターソンおよび関連アルゴリズムの実装では、通常、このような操作を使用して正しく動作し、連続した操作が誤った順序で行われないようにする必要があります。メモリ アクセスの並べ替えは、命令を並べ替えないプロセッサでも発生する可能性があることに注意してください。

これが何を意味するのか、あるいはこれが答えなのかを理解するのに苦労しています。

では、Peterson のソリューションが最新のアーキテクチャで動作することが保証されていないのはなぜですか?

4

1 に答える 1

5

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

複数の CPU を搭載したシステムでは、ある CPU で発生するイベントのプログラム順序が別の CPU では異なるように認識される可能性があるため、アルゴリズムが機能しない場合があります。

これにより、(別のスレッドでまだ使用されている間に) クリティカル セクションに早く入り、(共有リソースでの作業がまだ完了していないときに) クリティカル セクションから早く出る可能性があります。

このため、CPU 内で発生するイベントの順序が外部から同じように見えるようにする必要があります。メモリ バリアは、このシリアル化を保証できます。

于 2013-03-28T07:04:44.787 に答える