Control de concurrencia

Cuando el sistema da soporte a múltiples usuarios en forma simultanea, la inconsistencia puede presentarse por factores adicionales:

ACTUALIZACIÓN PERDIDA.- Ocurre cuando la actualización de un usuario queda sobrescrita por la de otro cuando ambos accesan al sistema por un recurso común.

Un método comúnmente utilizado para evitar la actualización perdida es el bloqueo de registros o archivos. Este consiste en activar restricciones de acceso para los recursos que están siendo utilizados por un proceso en un momento determinado.

Con el objeto de no retardar la ejecución de determinados procesos que pretendan alcanzar recursos específicos, los bloqueos normalmente se establecen para los recursos en forma individual.

Esto puede traer como consecuencia:

INTERBLOQUEO (DEAD LOCK).-    Se presenta cuando dos procesos que compitan por recursos comunes inician su ejecución tomando alguno de ellos y bloqueándolo en este momento.

El proceso requiere para finalizar su ejecución del recurso que esta bloqueado por el otro proceso presentándose de esta manera un bloqueo mutuo en el que ninguno de los procesos puede finalizar. Una de las alternativas más comunes para minimizar el interbloqueo consiste en asignar una secuencia especifica de acceso a los recursos para aquellos procesos que los requieren en forma común, ejemplo:

PROCESOS RECURSOS

A X Y
B Y Y

Lo anterior permitirá que otros procesos (por ejemplo C Y ) pueden participar puesto que el primer proceso no bloqueo a los recursos en forma global. Aunque la técnica anterior es eficiente en muchos casos, la mejor estrategia para tratar el interbloqueo es la conocida como bloqueo en dos fases. Normalmente las políticas de los sistemas incluyen técnicas para detectar el interbloqueo y abortar a uno o todos los procesos involucrados para dar agilidad al sistema las formas más comunes de detecciones son:

  • Control de longitud de la cola de procesos.
  • Verificación de ciclos en las conexiones proceso tiene un recurso.