{'fraction_non_alphanumeric': 0.02011407985589913, 'fraction_numerical': 0.0, 'mean_word_length': 5.482490272373541, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
LOGICAL TIME : U Distributed Systems

logical clocks. distributed computation consists of a set of processes that cooperate and compete to achieve a common goal. These processes do not share a common global memory and communicate solely by passing messages over a communication network. The communication delay is finite but unpredictable. A process’s actions are modeled as three types of events: internal, message send, and message receive. An internal event affects only the process at which it occurs, and the events at a process are linearly ordered by their order of occurrence. Send and receive events signify the flow of information between processes and establish causal dependency from the sender process to the receiver process. Consequently, the execution of a distributed application results in a set of distributed events produced by the process. The causal precedence relation induces a partial order on the events of a distributed computation. Causality among events, more formally the causal precedence relation, is a powerful concept for reasoning, analyzing, and drawing inferences about a distributed computation. The knowledege of the causal precedence relation between processes helps programmers, designers, and the system itself solve a variety of problems in distributed computing. In distributed algorithms design, such knowledge helps ensure liveness and fairness in mutual exclusion algorithms, maintains consistency in replicated databases, and helps design deadlock-detection algorithms that avoid phantom and undetected deadlocks. It also helps construct a consistent state for resuming reexecution in distributed debugging, build a checkpoint in failure recovery, and detect file inconsistencies in replicated databases. Such knowledge lets a process measure the progress of other processes, which is useful when discarding obsolete information, collecting garbage, and detecting termination. Finally, knowing the number of causally dependent events helps measure the amount of concurrency in a computation, since all events not causally related can be executed concurrently. Human beings use the concept of causality to plan, schedule, and execute an enterprise, or to determine a plan’s feasibility. In daily life, we use global time to deduce causality from loosely synchronized clocks such as wrist watches and wall clocks. But in distributed computing systems, the rate of event occurrence is several magnitudes higher, and the event-execution time several magnitudes smaller. If the physical clocks in these systems are not synchronized precisely, the causality relation between events cannot be captured accurately. The notion of time is basic to capturing the causality between events. However, distributed systems have no built-in physical time and can only approximate it. Even the Internet’s Network Time which maintain a time accurate to a few tens of milliseconds, are not adequate for capturing causality in distributed systems. However, in a distributed computation, both the progress and the interaction between processes occurs in spurts. Consequently, we can use logical clocks to accurately capture the causality relation between events. This article presents a general framework of a system of logical clocks in distributed systems and discusses three methods-scalar, vector, and