Синхронизация – это процедура согласования времени выполнения объектами процессов обработки или передачи данных.
Синхронизация осуществляется на физическом уровне посредством тактирования, задающего единый стандарт дискретного времени для управления процессом передачи сигналов и на остальных уровнях посредством передачи специальных блоков данных, либо введением в головную часть блоков специальных полей (флагов).
Синхронизация в информационном понятии может относиться только либо к синхронизации процессов, либо к синхронизации имеющихся данных:
- синхронизация процессов — это приведение двух или нескольких процессов к такому их протеканию, когда определенные стадии разных процессов совершаются в определенном порядке, либо одновременно;
- синхронизация данных — ликвидация различий между двумя копиями данных. Предполагается, что ранее эти копии были одинаковы, а затем одна из них, либо обе были независимо изменены.
Синхронизация необходима в каждых случаях, когда параллельно протекающим процессам необходимо взаимодействовать.
Для ее организации используют средства межпроцессного взаимодействия. Среди наиболее известных средств — сигналы и сообщения, семафоры и мьютексы, каналы (pipe) и совместно используемая память.
Способ синхронизации данных зависит от делаемых дополнительных предположений, потому что, независимо сделанные изменения могут быть несовместимы друг с другом (т. н. «конфликт изменений»), и даже теоретически не существует общего способа разрешения подобных ситуаций.
Но, есть ряд частных способов, применимых в некоторых случаях:
- Предполагают, что изменения вносились лишь в одну из копий — «рабочую» — и другая копия просто перезаписывается ее содержимым. Этот способ реализуют большинство приложений синхронизации; в силу необратимости делаемых изменений пользователю дается выбор, какую копию считать «главной».
- Если данные представляют собой набор независимых записей (т.е., любое сочетание записей является корректным — напр., телефонная книга), то можно просто объединить множества записей. Это ликвидирует риск потери информации, но чтобы удалить запись из набора, этот способ приходится сочетать с первым.
- Если наборы синхронизируются неоднократно, можно автоматически вводить в них дополнительную служебную информацию: дата и время последнего изменения записи, пометки об удаленных записях, которые стираются после следующей синхронизации или через достаточно большое время. Этот подход используется, например, в некоторых почтовых программах.