linearizability cap announcements
play

Linearizability & CAP Announcements No hours this week. - PowerPoint PPT Presentation

Linearizability & CAP Announcements No hours this week. Announcements No hours this week. Sorry am traveling starting tomorrow. Announcements No hours this week. Sorry am traveling starting tomorrow. Lab 1 goes out


  1. Is Linearizable? A: q.enq(x) A: q.enq(x) A: q.enq(x) A: q.OK() A: q.OK() A: q.OK() B: q.enq(y) B: q.enq(y) B: q.enq(y) B: q.OK() B: q.OK() B: q.OK() A: q.enq(z) A: q.enq(z) A: q.enq(z) B: q.deq() Yes No B: q.deq() B: q.deq() B: q.OK(x) B: q.OK(y) B: q.OK(x) A: q.OK() A: q.OK() A: q.OK() A: q.deq() A: q.deq() A: q.deq() B: q.deq() B: q.deq() B: q.OK(y) B: q.OK(x) A: q.OK(z) A: q.OK(z)

  2. Is Linearizable? A: q.enq(x) A: q.enq(x) A: q.enq(x) A: q.OK() A: q.OK() A: q.OK() B: q.enq(y) B: q.enq(y) B: q.enq(y) B: q.OK() B: q.OK() B: q.OK() A: q.enq(z) A: q.enq(z) A: q.enq(z) B: q.deq() Yes No B: q.deq() Yes B: q.deq() B: q.OK(x) B: q.OK(y) B: q.OK(x) A: q.OK() A: q.OK() A: q.OK() A: q.deq() A: q.deq() A: q.deq() B: q.deq() B: q.deq() B: q.OK(y) B: q.OK(x) A: q.OK(z) A: q.OK(z)

  3. Sequential Consistency • Operations in a single process happen in the same order. • Globally operations happen in some sequential order across processes. inv(op1) res(op1) inv(op2) res(op2) Process 1 Process 2 inv(op3) res(op3) inv(op4) res(op4)

  4. Sequential Consistency inv(op1) res(op1) inv(op2) res(op2) Process 1 Process 2 inv(op3) res(op3) inv(op4) res(op4)

  5. Sequential Consistency inv(op1) res(op1) inv(op2) res(op2) Process 1 Process 2 inv(op3) res(op3) inv(op4) res(op4) inv(op1) res(op1) inv(op3) res(op3) inv(op2) res(op2) inv(op4) res(op4)

  6. Sequential Consistency inv(op1) res(op1) inv(op2) res(op2) Process 1 Process 2 inv(op3) res(op3) inv(op4) res(op4) inv(op1) res(op1) inv(op3) res(op3) inv(op2) res(op2) inv(op4) res(op4) inv(op1) res(op1) inv(op2) res(op2) inv(op3) res(op3) inv(op4) res(op4)

  7. Sequential Consistency inv(op1) res(op1) inv(op2) res(op2) Process 1 Process 2 inv(op3) res(op3) inv(op4) res(op4) inv(op1) res(op1) inv(op3) res(op3) inv(op2) res(op2) inv(op4) res(op4) inv(op1) res(op1) inv(op2) res(op2) inv(op3) res(op3) inv(op4) res(op4) inv(op1) res(op1) inv(op4) res(op4) inv(op2) res(op2) inv(op3) res(op3)

  8. Sequential Consistency

  9. Sequential Consistency • Not real time. Why? • Not local. Why?

  10. Sequential Consistency A: p.enq(x) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  11. Sequential Consistency A: p.enq(x) p.enq(x) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  12. Sequential Consistency X A: p.enq(x) p.enq(x) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  13. Sequential Consistency X A: p.enq(x) p.enq(x) p.OK( ) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  14. Sequential Consistency X q.enq(Y) A: p.enq(x) p.enq(x) p.OK( ) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  15. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) p.OK( ) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  16. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) q.OK( ) p.OK( ) A: p.OK() B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  17. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) q.OK( ) p.OK( ) A: p.OK() q.enq(X) B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  18. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) p.OK( ) A: p.OK() q.enq(X) B: q.enq(y) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  19. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) p.OK( ) A: p.OK() q.enq(X) B: q.enq(y) q.OK( ) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  20. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) q.OK( ) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  21. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X Y q.OK( ) p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) q.OK( ) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  22. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X Y q.OK( ) p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() q.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  23. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X Y q.OK( ) p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() q.deq() p.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  24. Sequential Consistency X Y q.enq(Y) A: p.enq(x) p.enq(x) X Y q.OK( ) p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() q.deq() p.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  25. Sequential Consistency A: p.enq(x) A: p.OK() B: q.enq(y) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  26. Sequential Consistency q.enq(Y) A: p.enq(x) A: p.OK() B: q.enq(y) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  27. Sequential Consistency Y q.enq(Y) A: p.enq(x) A: p.OK() B: q.enq(y) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  28. Sequential Consistency Y q.enq(Y) A: p.enq(x) q.OK( ) A: p.OK() B: q.enq(y) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  29. Sequential Consistency Y q.enq(Y) A: p.enq(x) q.OK( ) A: p.OK() p.enq(Y) B: q.enq(y) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  30. Sequential Consistency Y Y q.enq(Y) A: p.enq(x) q.OK( ) A: p.OK() p.enq(Y) B: q.enq(y) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  31. Sequential Consistency Y Y q.enq(Y) A: p.enq(x) q.OK( ) A: p.OK() p.enq(Y) B: q.enq(y) p.OK( ) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  32. Sequential Consistency Y Y p.enq(x) q.enq(Y) A: p.enq(x) q.OK( ) A: p.OK() p.enq(Y) B: q.enq(y) p.OK( ) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  33. Sequential Consistency Y Y p.enq(x) q.enq(Y) A: p.enq(x) q.OK( ) X A: p.OK() p.enq(Y) B: q.enq(y) p.OK( ) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  34. Sequential Consistency Y Y q.enq(Y) A: p.enq(x) p.enq(x) q.OK( ) X p.OK( ) A: p.OK() p.enq(Y) B: q.enq(y) p.OK( ) B: q.OK() A: q.enq(x) p q A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  35. Sequential Consistency Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) X p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() p.deq() A: q.enq(x) p q p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  36. Sequential Consistency Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) X p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() q.deq() p.deq() A: q.enq(x) p q p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  37. Sequential Consistency Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) X p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() q.deq() p.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  38. Sequential Consistency Y q.enq(Y) A: p.enq(x) p.enq(x) X q.OK( ) X p.OK( ) A: p.OK() p.enq(Y) q.enq(X) B: q.enq(y) p.OK( ) q.OK( ) B: q.OK() q.deq() p.deq() A: q.enq(x) p q q.ok(X) p.ok(Y) A: q.OK() B: p.enq(y) B: p.OK() A: p.deq() A: p.OK(y) Process A Process B B: q.deq() B: q.OK(x)

  39. Serializability and Strict Serializability • Common in databases, will deal with in a few classes.

  40. Serializability and Strict Serializability • Common in databases, will deal with in a few classes. • Basic extension: consider multiple operations at a time rather than one operation.

Recommend


More recommend