Programacion concurrente

Páginas: 42 (10302 palabras) Publicado: 5 de junio de 2014
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 procesadorutilizable por cada
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 deinstrucciones primitivas 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 el programa 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 procesosA y B que pueden
incrementar 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 quedisponen de puertas giratorias. 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 deforma
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
Siambas instrucciones se realizaran como 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 dememoria. El
resultado sería que el incremento 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 xen un registro del procesador
- incrementar el valor 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...
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