Everything2
Near Matches
Ignore Exact
Full Text
Everything2

Lamport's Logical Clocks

created by dgwatson

(idea) by dgwatson (4.1 y) (print)   ?   (I like it!) 1 C! Mon Mar 03 2003 at 19:59:19

Leslie Lamport proposed this scheme to provide ordering of events in a distributed environment using logical clocks. Because it is impossible to have perfectly synchronized clocks and global time in a distributed system, it is often necessary to use logical clocks instead.

Definitions:
Happened Before Relation (->). This relation captures causal dependencies between events, that is, whether or not events have a cause and effect relation. This relation (->) is defined as follows:

  • a -> b, if a and b are in the same process and a occurred before b.
  • a -> b, if a is the event of sending a message and b is the receipt of that message by another process.
  • If a -> b and b -> c, then a -> c - that is, the relation has the property of transitivity.

Causally Related Events: If event a -> event b, then a causally affects b.

Concurrent Events: Two distinct events a and b are concurrent (a || b) if (not) a -> b and (not) b -> a. That is, the events have no causal relationship. This is equivalent to b || a.

For any two events a and b in a system, only one of the following is true: a -> b, b -> a, or a || b.

Lamport introduced a system of logical clocks in order to make the -> relation possible. It works like this: Each process Pi in the system has its own clock Ci. Ci can be looked at as a function that assigns a number, Ci(a) to an event a. This is the timestamp of the event a in process Pi. These numbers are not in any way related to physical time -- that is why they are called logical clocks. These are generally implemented using counters, which increase each time an event occurs. Generally, an event's timestamp is the value of the clock at that time it occurs.

Conditions Satisfied by the Logical Clock system:
For any events a and b, if a -> b, then C(a) < C(b). This is true if two conditions are met:

  • If a occurs before b, then Ci(a) < Ci(b).
  • If a is a message sent from Pi and b is the recept of that same message in Pj, then Ci(a) < Cj(b).

Implementation Rules Required

  • Clock Ci is incremented for each event: Ci := Ci + d (d > 0)
  • if a is the event of sending a message from one process to another, then the receiver sets its clock to the max of its current clock and the sender's clock - that is, Cj := max(Cj, tm + d) (d > 0) .
.

printable version
chaos

The three-handed clock Leslie Lamport Berkeley (Gusella & Zatti) Algorithm Lamport's Algorithm
King Doniert's Stone distributed computing Conduit 4 Nightclub
implementation transitivity Fallacies of Definition Alarm clock chaos
Paul Feyerabend Roman law logical relation
clock $$
Y'know, if you log in, you can write something here, or contact authors directly on the site. Create a New User if you don't already have an account.
  Epicenter
Login
Password

password reminder
register

Everything2 Help

Cool Staff Picks
Things you could have written:
The War of the Worlds
Carnal Harvest
The Happy Prince
The crack whores vs. hellfire
Kings Cross by Coke-light
Stonewall Riots
Nobel Prize in Literature
President of the United States of America
This is just pure cool! It's cryptic, mystical, lovely. I had no choice!
It will be in Georgia. It will be Taipei.
Poetry you found that you wrote when you were ten but secretly still like
Joey Bishop
New York subway
New Writeups
LostPsion
"Shut the Fuck Up" Theaters(idea)
Vanish
The line between normal and not(place)
beatrice
You've been slowly taking me over for nearly a year, do you know that?(idea)
Berek
YouTube(thing)
shaogo
How to Pretend to Have a Job(idea)
hapax
Les Provinciales(review)
zoeb
The Scene(review)
aneurin
Telephone Numbers for drama purposes(idea)
Alnilamski
Cosmicopolis(fiction)
eien_meru
measure(idea)
Dreamvirus
pussy willow(thing)
czeano
Three "T"s(idea)
UncleM
Vantage Point 2: Fractal Thread Count(idea)
LostPsion
First Fiction: Night(fiction)
Lysander Peregrine
How to Pretend to Have a Job(idea)
This affordable entertainment brought to you by The Everything Development Company