چكيده به لاتين
Humans and computer systems interact with each other. We expect the systems we are interacting exhibit consistent behavior with respect to their past behavior. We also expect a distributed system to be transparent with respect to the geographical position of objects, and to be responsive to us as a centralized system is. The problem here is how to guarantee this consistent behavior of a distributed system in the field of time (clock) synchronization. It appears that the problem of distributed consensus lies at the heart of this problem.
The main motivation of this research is to present a method to guarantee the system’s consistent behavior, and not to exhibit anomalous behavior to its users. The aim has been to provide the proposed method as a service in order to be usable for a large group of users and applications. We have presented a game, entitled as: “The Game of Clocks”, in order to solve the problem of anomalous behavior. In simple words, this problem is an inconsistency in the system’s behavior, which is observable by its users. Efforts have been made to make the proposed method for solving the problem fault-tolerant with respect to the occurrence of crash failures. In this research, we have also considered the four pillars of “Trustworthy Computing," and our emphasis has been more on the reliability and tolerating crash failures.
In this thesis, we have proposed a method for solving the problem of anomalous behavior, which is based on logical clocks. Efforts have been made to completely eliminate the anomalous behavior, by placing processes in a binary tree structure and applying a minor change in one of the clock advancement rules of logical clocks. In terms of being tolerant with respect to failure, we have tried to stand with the occurrence of crash failures by adding pointers in processes, which point to other nodes. In order to evaluate the proposed method, we have designed a simulator to show the main idea of standing the anomalous behavior in the absence of failures. Then, we have done a real implementation of the method in order to show its behavior in a real environment in the presence of crash failures. The implemented program is executed in virtual machines, which constitute a real system together. We have also presented the logical reasoning about the correctness of the decisions we have made in the proposed method.