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:
- barrier
- lock/semaphore
- thread join
- mutex
- non-blocking synchronization
- synchronous communication operations (see: Comparison of synchronous and asynchronous signalling)
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
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
- Anatomy of Linux synchronization methods at IBM developerWorks