One of the things that made linearizabilty click for me was thinking in terms of happens-before:<p><pre><code> volatile int a;
a = 1;
print(a) // Could this print Zero?
</code></pre>
Even assuming only one program, one thread, one process, no interleaving and nothing fishy, could the final line print 0? In the serializable consistency, the answer is yes. Linearizability is framed in terms of clocks, but really that's just trying to establish that one thing happened before another. The "clock" in this example is the line number.