一貫性モデル (ソフトウェア)
一貫性モデルの中には、他のモデルよりも制限が厳しいものがある。言い換えれば、厳密な一貫性モデルは、より多くの制約を一貫性要件として強制する。モデルの強さは、プログラムの順序や不可分性の緩和によって定義され、モデルの強さを比較することもできる。あるモデルは、同じ緩和を適用しているか、それ以上の緩和を適用している場合、直接に関係している。一方、異なる要件を緩和したモデルは直接関係しない。
逐次整合性(一貫性)には、プログラム順序と書き込みの不可分性という2つの要件がある。これらの要件を緩和することで、異なる緩和された一貫性モデルを得ることができる。これは、緩和された制約とともに、性能が向上するように行われるが、プログラマは、同期技術を適用してメモリ一貫性を実装する責任があり、ハードウェアを十分に理解していなければならない。
緩和の可能性:
書き込みから読み込みへのプログラム順序
書くために書くプログラムの順序
読み込みから読み込みと読み込みから書き込みのプログラム命令
緩和型一貫性モデルと呼ばれる、逐次一貫性の要件を緩和した一貫性モデルがある。これらの一貫性モデルは、ハードウェアレベルでのメモリ一貫性を提供しない。実際には、プログラマーは同期技術を適用してメモリ一貫性を実装する責任がある。上記のモデルは、4つの基準に基づいて分類されており、さらに詳しく説明する。
緩和した一貫性を定義するために、4つの比較がある。
以下のモデルは、緩和された一貫性のいくつかのモデルです。
次のようなケースが想定できる。
行XはノードMとNに複製される
クライアントAがノードMに行Xを書き込む
一定時間t後、クライアントBがノードNから行Xを読み出す
一貫性モデルは、クライアントAが行った書き込みをクライアントBが見ているかどうかを判断しなければならない。
グルーピング操作では、同期変数へのアクセスは逐次一貫している。プロセスは、以前の書き込みがすべて完了した同期変数へのアクセスを許可される。つまり、同期変数に対するすべての操作が完了するまで、同期変数へのアクセスは許可されない。