【せんけいかかのうせい】

線形化可能性 とは?

最終更新:
💡 重なる操作も、実時間の順序を守る一列に並べられる

並行する操作が、それぞれ呼び出しから応答までの間の一瞬で起きたように見え、対象の仕様と実時間の前後関係を守って一列に並べられる性質。

📌 このページのポイント
操作の区間内で、一列に順序を置く A 書く:1 B 読む → 1 C 読む → 1 時間の向き AとBの区間は重なる CはAの応答後に開始 この図で並べた順序 書く:1 → 読む:1 → 読む:1
初期値0のレジスタへAが1を書き、BとCが1を読む例。他の書き込みはありません。青線は呼び出しから応答まで、紫点は線形化点の一例で、実測の時間ではありません。
ひよこ ひよこ
線形化可能性って何なの?
ペンギン先生 ペンギン先生
同時に動く操作が、順番に一つずつ実行されたように見える性質だよ。各操作が呼び出しから応答までの間の一点で起きたと考え、対象の仕様に合う一列の順序を作れる。その一点を線形化点と呼ぶんだ。
ひよこ ひよこ
書き込みと読み取りなら、どうなるの?
ペンギン先生 ペンギン先生
一つの値を読む・書く対象を考えよう。値を1に書く操作が完了し、そのあと読み取りを始めたなら、間に別の書き込みがない限り1が返る。書き込み後にさらに値が変わった場合は、その変更も含めた順序で考えるんだ。
ひよこ ひよこ
書き込みと読み取りが重なったら?
ペンギン先生 ペンギン先生
その二つには、完了後に始まるという前後関係がないよ。読み取りが先だったと考えて変更前の値を返すことも、書き込みが先だったと考えて1を返すこともある。ただし、全体として矛盾のない順序と結果にならなければならないんだ。
ひよこ ひよこ
トランザクションの直列化可能性とは同じ?
ペンギン先生 ペンギン先生
直列化可能性は、トランザクションを順番に実行したのと同じ結果になる性質で、実時間の順序までは要求しないよ。複数の操作をまとめたトランザクションについて、その実時間の順序も守るのが厳密な直列化可能性なんだ。
ひよこ ひよこ
複製したデータにも使える?
ペンギン先生 ペンギン先生
使えるけれど、分断した全ノードが常に応答する保証とは両立しないよ。たとえば、更新を受け取れない側が読み取りに古い値を返すと、完了済みの書き込みとの順序を守れない場合がある。応答を待たせるなど、保証と応答可能な範囲の調整が必要になるんだ。
もっと詳しく知りたい人へ

対象は、単一の数値だけ?

いいえ。キューやレジスタなど、対象の仕様に沿って操作の順序と結果を考えます。原論文では、個々のオブジェクトの線形化可能性を組み合わせられる性質も示されています。一つの値の読み書きは、その考え方を説明する例です。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「線形化可能性」って出てきたら「同時操作を、仕様と実時間の順序を守る一列に並べられる性質」と思えればだいたいOK!
📖 おまけ:英語の意味
「Linearizability」 = 線形化可能性
💬 並行に走る操作を、1本の時間軸の上に一列(linear)に並べ直せることから付いた名前だよ。HerlihyとWingが1990年の論文で定式化したんだ

参考資料

← 用語集にもどる