Base De Datos De Planillas
Enviado por ksem • 11 de Mayo de 2015 • 444 Palabras (2 Páginas) • 178 Visitas
Exclusión mutua
Introducción
Cuando dos procesos o hilos se ejecutan concurrentemente y comparten las mismas variables, es posible que haya sobreescritura del valor de las mismas dando lugar a resultados no deseables. A esta situación se le conoce como el problema de la exclusión mutua.
La Exclusión Mutua
Consiste en asegurar que dos procesos concurrentes no accedan a un mismo recurso común al mismo tiempo, ya que ello puede llevar a incoherencia en la información que se procesa. Un problema típico de la programación concurrente donde la exclusión mutua se hace presente es en el problema de los jardines: Se desea controlar el número de visitantes a unos jardines. La entrada y la salida a los jardines se pueden realizar por dos puntos que disponen de 2 puertas. Se desea poder conocer en cualquier momento el número de visitantes a los jardines, por lo que se dispone de un dispositivo de cálculo con conexión en cada uno de los dos puntos de entrada que le informan cada vez que se produce una entrada o una salida.
Si analizamos el problema y lo llevamos al terreno de la programación concurrente, podemos asociar el proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada. Ambos procesos se ejecutan concurrentemente y utilizan una única variable, digamos x, para llevar la cuenta del número de visitantes. El incremento o decremento de la variable se produce cada vez que un visitante entra o sale por una de las puertas. De esta forma, la entrada de un visitante por una de las puertas hace que se ejecute la instrucción:
x := x +1
mientras que la salida de un visitante hace que se ejecute la instrucción:
x := x - l
Aunque el proceso P1 y el proceso P2 se supongan ejecutados en procesadores distintos (lo cual no necesariamente es cierto), ambos utilizan la misma posición de memoria para guardar el valor de la variable compartida, es decir, de x. Se puede dar la situación de que el planificador de procesos del sistema permita el entrelazado (interfoliación) de las operaciones elementales anteriores de cada uno de los procesos, lo cual inevitablemente producirá errores que son difíciles de detectar mediante una prueba del programa, ya que el que se produzcan depende de la temporización de dos procesos independientes. Este ejemplo muestra la clara necesidad de sincronizar (poner de acuerdo) de alguna manera la actuación de ambos procesos de forma que no se produzcan interferencias entre ellos.
Para evitar este tipo de errores se pueden identificar aquellas regiones de los procesos que acceden a variables compartidas y dotarlas de la posibilidad de ejecución como si fueran una única instrucción. Surge entonces el concepto de región crítica.
...