| Author: | Madhusudhanan Sridharan |
| Advisor: | Sandeep Kulkarni |
| Email: | sridhara@cse.msu.edu |
Since distributed systems lack a consistent global clock, distributed applications need to identify other ways to order events in a systematic manner. Causality among events provides one such order and, hence, is important in such distributed applications. Lamport first introduced logical clocks that enable processes to track causal relation between events. We address the problem of realistic, i.e., bounded space and fault-tolerant, implementation of logical clocks. Our clocks are designed for loosely-synchronized timed systems where the drift between clocks as well as message transmission delays are known; the size of our clocks is proportional to the maximum clock drift and message delay bound. We show that our clock can be substituted for any application that uses Lamport's logical clocks. Moreover, such a substitution simplifies adding fault-tolerance to applications. In a broad framework, our clocks are an illustration of component substitutability where we utilize the `contract' between a component and the application that uses it. We find that the use of the contract between an application and its components is often very useful to make distributed applications fault-tolerant.