ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

2.4.1 Exclusion Mutua De Seccion Critica


Enviado por   •  27 de Mayo de 2014  •  1.013 Palabras (5 Páginas)  •  516 Visitas

Página 1 de 5

2.4.1 Exclusion Mutua de Seccion Critica

El metodo mas sencillo de comunicacion entre los procesos de un programa concurrente es el uso comun de unas variables de datos. Esta forma tan sencilla de comunicacion puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede hacer que la accion de un proceso interfiera en las acciones de otro de una forma no adecuada. Aunque nos vamos a fijar en variables de datos, todo lo que sigue seria valido con cualquier otro recurso del sistema que solo pueda ser utilizado por un proceso a la vez.

Por ejemplo una variable x compartida entre dos procesos A y B que pueden incrementar o decrementar la variable dependiendo de un determinado suceso. Este situacion se plantea, por ejemplo, en un problema tipico de la programacion concurrente conocido como el Problema de los Jardines. En este problema se supone que se desea controlar el numero de visitantes a unos jardines. La entrada y la salida a los jardines se puede realizar por dos puntos que disponen de puertas giratorias. Se desea poder conocer en cualquier momento el numero de visitantes a los jardines, por lo que se dispone de un computador con conexion en cada uno de los dos puntos de entrada que le informan cada vez que se produce una entrada o una salida.

Asociamos el proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada. Ambos procesos se ejecutan de forma concurrente y utilizan una unica variable x para llevar la cuenta del numero de visitantes.

El incremento o decremento de la variable se produce cada vez que un visitante entra o sale por una de las puertas. Asi, la entrada de un visitante por una de las puertas hace que se ejecute la instruccion

x:=x+1

mientras que la salida de un visitante hace que se ejecute la instruccion

x:=x-1

Si ambas instrucciones se realizaran como una unica instruccion hardware, no se plantearia ningun problema y el programa podria funcionar siempre correctamente. Esto es asi por que en un sistema con un unico procesador solo se puede realizar una instruccion cada vez y en un sistema multiprocesador se arbitran mecanismos que impiden que varios procesadores accedan a la vez a una misma posicion de memoria. El resultado seria que el incremento o decremento de la variable se produciria de forma secuencial pero sin interferencia de un proceso en la accion del otro. Sin embargo, si se produce interferencia de un proceso en el otro si la actualizacion de la variable se realiza mediante la ejecucion de otras instrucciones mas sencillas, como son las usuales de:

copiar el valor de x en un registro del procesador

incrementar el valor del registro

almacenar el resultado en la direccion donde se guarda x

Aunque el proceso P1 y el P2 se suponen ejecutados en distintos procesadores (lo que no tiene porque ser cierto en la realidad) ambos usan la misma posicion de memoria para guardar el valor de x. Se puede dar la situacion de que el planificador de procesos permita el entrelazado de las operaciones elementales anteriores

...

Descargar como (para miembros actualizados) txt (6 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com