Tema 9 Sincronizacion de Procesos

## **Sincronización de Procesos**

Es la coordinación y cooperación
de un conjunto de procesos para asegurar la comparación de recursos de cómputo.
La sincronización entre procesos es necesaria para prevenir y/o corregir
errores de sincronización debidos al acceso concurrente a recursos compartidos,
tales como estructuras de datos o dispositivos de E/S, de procesos
contendientes. La sincronización entre procesos también permite intercambiar
señales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar
las relaciones específicas de precedencia impuestas por el problema que se
resuelve. En muchos casos, los procesos se reúnen para realizar tareas en
conjunto, a este tipo de relación se le llama procesos cooperativos. Para
lograr la comunicación, los procesos deben sincronizarse, de no ser así pueden
ocurrir problemas no deseados. Sin una sincronización adecuada entre procesos,
la actualización de variables compartidas puede inducir a errores de tiempo
relacionados con la concurrencia que son con frecuencia difíciles de depurar.
Una de las causas principales de este problema es que procesos concurrentes
puedan observar valores temporalmente inconsistentes de una variable compartida
mientras se actualizan.

**Condiciones de corrida**

Son el resultado de accesos no
controlados a datos compartidos. Estos accesos no controlados producen
resultados inesperados (ya que por ejemplo un proceso puede pisar los datos de
otro).

Las condiciones de corrida vienen
como resultado del acceso compartido de los recursos. Cuando dos hilos de
ejecución tienen que trabajar con la misma estructura de datos (o recurso de
hardware) la posibilidad de mezcla existe.

**Abrazo Mortal**

Es el bloqueo permanente de un
conjunto de procesos o hilos de ejecución en un sistema concurrente que
compiten por recursos del sistema o bien se comunican entre ellos.​ ​ A
diferencia de otros problemas de concurrencia de procesos, no existe una
solución general para los Inter bloqueos.

Representación de Bloqueos Mutuos
usando grafos

El Bloqueo mutuo también puede
ser representado usando grafos dirigidos, donde el proceso es representado por
un cuadrado y el recurso, por un círculo. Cuando un proceso solicita un
recurso, una flecha es dirigida desde el proceso al recurso. En cambio, cuando
un recurso está asignado a un proceso, una flecha es dirigida del recurso al proceso.

Ø
**Condiciones Necesarias**

También conocidas
como **condiciones de Coffman** por su primera descripción en 1971 en un artículo escrito por E. G. Coffman.3​

Estas condiciones
deben cumplirse simultáneamente y no son totalmente independientes entre ellas.

Sean los procesos P0, P1,..., Pn y los recursos R0,
R1,..., Rm:

·
**Condición de exclusión mutua**: existencia
de al menos de un recurso compartido por los procesos, al cual solo puede
acceder uno simultáneamente.

·
**Condición de retención y espera**: al menos
un proceso Pi ha adquirido un recurso Ri,
y lo retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro
proceso.

·
**Condición de no expropiación**: los
recursos no pueden ser expropiados por los procesos, es decir, los recursos
solo podrán ser liberados voluntariamente por sus propietarios.

·
**Condición de espera circular**: dado el
conjunto de procesos P0...Pm(subconjunto
del total de procesos original),P0está
esperando un recurso adquirido por P1, que está esperando un
recurso adquirido por P2,... ,que está esperando
un recurso adquirido por Pm, que está esperando un
recurso adquirido por P0. Esta condición implica
la condición de retención y espera.