Just like usual clocks, systems have a clock that tells time to applications running on the system.
Consider two hosts in a code development setup, which are out of sync by $2$ ticks.

Figure 5.1 Each machine has its own clock.
In computer systems, clock skew refers to the difference in time readings between the clocks of different machines. This skew is mainly attributed to the inherent variations in the frequencies of crystals used in the physical clocks of computers.
Now, the question of how do we synchronize them with real-world clocks, and how do we synchronize the clocks with each other?
The foundation for maintaining a globally consistent time in distributed systems is the Coordinated Universal Time (UTC). Represented as $t$, $C_p(t)$ denotes the value of the software clock counter on machine $p$ at time $t$.
Internal synchronization: The primary objective of clock synchronization algorithms is to ensure that the deviation between the clocks of any two machines within the distributed system remains within a specified bound, known as precision ($\pi$).
$$ \forall t, \forall p, q : |C_p(t) - C_q(t)| \leq \pi $$
It's crucial to note that precision specifically addresses the deviation between clocks of machines within the distributed system.
External synchronization: When considering an external reference point, such as UTC, the focus shifts to accuracy. The goal is to limit the difference between the clock of a particular machine and the actual time to a predefined value ($\alpha$).
$$ \forall t, \forall p : |C_p(t) - t| \leq \alpha $$