Programacion concurrente

Páginas: 42 (10357 palabras) Publicado: 11 de diciembre de 2010
Capítulo 6 Programación concurrente
6-1 Introducción
Se conoce por programación concurrente a la rama de la informática que trata de las notaciones y técnicas de programación que se usan para expresar el paralelismo potencial entre tareas y para resolver los problemas de comunicación y sincronización entre procesos. En la programación concurrente se supone que hay un procesador utilizable porcada tarea; no se hace ninguna suposición de si el procesador será una unidad independiente para cada uno de ellos o si será una sola CPU que se comparte en el tiempo entre las tareas. Independientemente de cómo se vaya a ejecutar realmente el programa, en un sistema uniprocesador o multiprocesador, el resultado debe ser el correcto. Por ello, se supone que existe un conjunto de instruccionesprimitivas que son o bien parte del S.O. o bien parte de un lenguaje de programación, y cuya correcta implementación y corrección está garantizada por el sistema.

6-2

EXCLUSIÓN MUTUA
El método más sencillo de comunicación entre los procesos de un programa

concurrente es el uso común de unas variables de datos. Esta forma tan sencilla de comunicación puede llevar, no obstante, a errores en elprograma ya que el acceso concurrente puede hacer que la acción 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

1

sería válido con cualquier otro recurso del sistema que sólo pueda ser utilizado por un proceso a la vez.

Por ejemplo una variable x compartida entre dos procesos A y B que puedenincrementar o decrementar la variable dependiendo de un determinado suceso. Este situación se plantea, por ejemplo, en un problema típico de la programación concurrente conocido como el Problema de los Jardines. En este problema se supone que se desea controlar el número de visitantes a unos jardines. La entrada y la salida a los jardines se puede realizar por dos puntos que disponen de puertasgiratorias. Se desea poder conocer en cualquier momento el número de visitantes a los jardines, por lo que se dispone de un computador 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. 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única variable 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. Así, 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-1 Si ambas instrucciones se realizarancomo una única instrucción hardware, no se plantearía ningún problema y el programa podría funcionar siempre correctamente. Esto es así por que en un sistema con un único procesador sólo se puede realizar una instrucción cada vez y en un sistema multiprocesador se arbitran mecanismos que impiden que varios procesadores accedan a la vez a una misma posición de memoria. El resultado sería que elincremento o decremento de la variable se produciría de forma secuencial pero sin interferencia de un proceso en la acción del otro. Sin embargo, sí se produce interferencia de un proceso en el otro si la actualización de la variable se realiza mediante la ejecución de otras instrucciones más sencillas, como son las usuales de:
2

- copiar el valor de x en un registro del procesador - incrementar elvalor del registro - almacenar el resultado en la dirección 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 posición de memoria para guardar el valor de x. Se puede dar la situación de que el planificador de procesos permita el entrelazado de las operaciones elementales...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • PROGRAMACION CONCURRENTE
  • programación concurrente
  • Programacion concurrentes hilos
  • Programación concurrente servlet
  • Programacion concurrente y paralela
  • Programación concurrente en java
  • Python en programación concurrente
  • Unidad IV Programación concurrente (Multihilo)

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS