Sincronización (informática)


En informática , la sincronización se refiere a uno de dos conceptos distintos pero relacionados: sincronización de procesos y sincronización de datos . La sincronización de procesos se refiere a la idea de que varios procesos se unen o se dan la mano en un punto determinado, para llegar a un acuerdo o comprometerse con una determinada secuencia de acción. La sincronización de datos se refiere a la idea de mantener múltiples copias de un conjunto de datos en coherencia entre sí, o para mantener la integridad de los datos . Las primitivas de sincronización de procesos se utilizan comúnmente para implementar la sincronización de datos.

La necesidad de sincronización no surge meramente en sistemas multiprocesador sino para cualquier tipo de procesos concurrentes; incluso en sistemas de un solo procesador. A continuación se mencionan algunas de las principales necesidades de sincronización:

Bifurcaciones y uniones : cuando un trabajo llega a un punto de bifurcación, se divide en N sub-trabajos que luego son atendidos por n tareas. Después de recibir servicio, cada subtrabajo espera hasta que todos los demás subtrabajos terminen de procesarse. Luego, se vuelven a unir y abandonan el sistema. Por lo tanto, la programación en paralelo requiere sincronización, ya que todos los procesos en paralelo esperan a que ocurran varios otros procesos.

Productor-consumidor: en una relación productor-consumidor, el proceso del consumidor depende del proceso del productor hasta que se hayan producido los datos necesarios.

Recursos de uso exclusivo: cuando varios procesos dependen de un recurso y necesitan acceder a él al mismo tiempo, el sistema operativo debe asegurarse de que solo un procesador acceda a él en un momento determinado. Esto reduce la concurrencia.

La sincronización de subprocesos se define como un mecanismo que garantiza que dos o más procesos o subprocesos concurrentes no ejecuten simultáneamente algún segmento de programa en particular conocido como sección crítica . El acceso de los procesos a la sección crítica se controla mediante técnicas de sincronización. Cuando un subproceso comienza a ejecutar la sección crítica (segmento serializado del programa), el otro subproceso debe esperar hasta que finalice el primer subproceso. Si no se aplican las técnicas de sincronización adecuadas [1] , puede causar una condición de carrera en la que los valores de las variables pueden ser impredecibles y variar según los tiempos de los cambios de contexto de los procesos o subprocesos.


Figura 1 : Tres procesos que acceden a un recurso compartido ( sección crítica ) simultáneamente.
Figura 2 : Un proceso que accede a un recurso compartido si está disponible, basado en alguna técnica de sincronización.
Figura 3: Los cambios tanto del servidor como del cliente (s) están sincronizados.