Synchronization (computer science)

From Wikipedia, the free encyclopedia

In computer science, synchronization refers to one of two distinct but related concepts: synchronization of processes, and synchronization of data. Process synchronization refers to the idea that multiple processes are to join up or handshake at a certain point, so as to reach an agreement or commit to a certain sequence of action. Data synchronization refers to the idea of keeping multiple copies of a dataset in coherence with one another, or to maintain data integrity. Process synchronization primitives are commonly used to implement data synchronization.

Contents

[edit] Process synchronization

Process synchronization refers to the coordination of simultaneous threads or processes to complete a task in order to get correct runtime order and avoid unexpected race conditions.

There are many types of synchronization:

A synchronization point is the location, in a process or collection of threads or processes, where the synchronization occurs. The interaction of synchronization points is one of the objects of study in the theory of concurrent computing. .....

[edit] Data synchronization

Main article: Data synchronization

A distinctly different (but related) concept is that of data synchronization. This refers to the need to keep multiple copies of a set of data coherent with one another.

Examples include:

  • File synchronization, such as syncing a hand-held MP3 player to a desktop computer.
  • Cluster file systems, which are file systems that maintain data or indexes in a coherent fashion across a whole computing cluster.
  • Cache coherency, maintaining multiple copies of data in sync across multiple caches.
  • RAID, where data is written in a redundant fashion across multiple disks, so that the loss of any one disk does not lead to a loss of data.
  • Database replication, where copies of data on a database are kept in sync, despite possible large geographical separation.
  • Journalling, a technique used by many modern file systems to make sure that file metadata are updated on a disk in a coherent, consistent manner.

[edit] Mathematical foundations

An abstract mathematical foundation for synchronization primitives is given by the history monoid. There are also many higher-level theoretical devices, such as process calculi and Petri nets, which can be built on top of the history monoid.

[edit] External links