1 / 16

Models and Clocks

Models and Clocks. Characteristics of a Distributed System. Absence of a shared clock Absence of shared memory Absence of failure detection. Model of a Distributed System. Asynchronous Message Passing. A Simple Distributed Program. Each process is defined as a set of states.

diata
Télécharger la présentation

Models and Clocks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Models and Clocks

  2. Characteristics of a Distributed System • Absence of a shared clock • Absence of shared memory • Absence of failure detection

  3. Model of a Distributed System • Asynchronous • Message Passing

  4. A Simple Distributed Program • Each process is defined as a set of states

  5. Model of a Distributed Computation • Interleaving model • A global sequence of events • eg. • P1 sends “what is my checking balance” to P2 • P1 sends “what is my savings balance to P2” • P2 receives “what is my checking balance” from P1 • P1 sets total to 0 • P2 receives “what is my savings balance” from P1 • P2 sends “checking balance = 40” to P1 • P1 receives “checking balance = 40” from P2 . . .

  6. Model of a Distributed Computation • Happened before model • Happened before relation • If e occurred before f in the same process, then e --> f • If e is the send event of a message and f is the receive event of the same message, then e --> f • If there exists an event g such that e --> g and g --> f, then e --> f

  7. A run in the happened-before model

  8. Logical Clocks • A logical clock C is a map from the set of events E to N (the set of natural numbers) with the following constraint:

  9. Lamport's logical clock algorithm publicclass LamportClock { int c; public LamportClock() { c = 1; } publicint getValue() { return c; } publicvoid tick() { // on internal actions c = c + 1; } publicvoid sendAction() { // include c in message c = c + 1; } publicvoid receiveAction(int src, int sentValue) { c = Util.max(c, sentValue) + 1; } }

  10. Vector Clocks • Map from the set of states to vectors of natural numbers with the constraint: • For all s, t: s--> t iff s.v < t.v ...... where s.v is the vector assigned to the state s. • Given vectors x,y : x < y • All elements of x are less than or equal to the corresponding elements of y • At least one element of x is strictly less than the corresponding element of y

  11. A Vector clock algorithm publicclass VectorClock { publicint[] v; int myId; int N; public VectorClock(int numProc, int id) { myId = id; N = numProc; v = newint[numProc]; for (int i = 0; i < N; i++) v[i] = 0; v[myId] = 1; } publicvoid tick() { v[myId]++; } publicvoid sendAction() { //include the vector in the message v[myId]++; } publicvoid receiveAction(int[] sentValue) { for (int i = 0; i < N; i++) v[i] = Util.max(v[i], sentValue[i]); v[myId]++; } }

  12. An execution of the vector clock algorithm

  13. Direct-Dependency Clocks • Weaker version of the vector clock • Maintain a vector clock locally • Process sends only its local component of the clock • Directly precedes relation: only one message in the happened-before diagram of the computation • Direct-dependency clocks satisfy

  14. A Direct-dependency clock algorithm publicclass DirectClock { publicint[] clock; int myId; public DirectClock(int numProc, int id) { myId = id; clock = newint[numProc]; for (int i = 0; i < numProc; i++) clock[i] = 0; clock[myId] = 1; } publicint getValue(int i) { return clock[i]; } publicvoid tick() { clock[myId]++; } publicvoid sendAction() { // sentValue = clock[myId]; tick(); } publicvoid receiveAction(int sender, int sentValue) { clock[sender] = Util.max(clock[sender], sentValue); clock[myId] = Util.max(clock[myId], sentValue) + 1; } }

  15. Matrix Clocks • N x N matrix • Gives processes additional knowledge

  16. The matrix clock algorithm publicclass MatrixClock { int[][] M; int myId; int N; public MatrixClock(int numProc, int id) { myId = id; N = numProc; M = newint[N][N]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) M[i][j] = 0; M[myId][myId] = 1; } publicvoid tick() { M[myId][myId]++; } publicvoid sendAction() { //include the matrix in the message M[myId][myId]++; } publicvoid receiveAction(int[][] W, int srcId) { // component-wise maximum of matrices for (int i = 0; i < N; i++) if (i != myId) { for (int j = 0; j < N; j++) M[i][j] = Util.max(M[i][j], W[i][j]); } } }

More Related