Vous êtes sur la page 1sur 4

1 de 4

Programacin concurrente
Consideraciones
Por qu usar hebras y procesos?

Programacin concurrente
Se entiende por programacin concurrente el conjunto de tcnicas y
notaciones que sirven para expresar el paralelismo potencial en los
programas, as como resolver problemas de comunicacin y
sincronizacin.
Un proceso es un programa en ejecucin con un estado asociado. Las
distintas aplicaciones que se ejecutan en un sistema operativo
multitarea son procesos independientes. Cada una de ellas tiene
asociado un contexto (prioridad, estado del procesador, lista de
interrupciones y seales que admite, pginas de memoria que ocupa,
etc.).
Una aplicacin concurrente est formada por un conjunto de procesos
concurrentes. En ella existen distintas hebras de control independientes,
vas simultneas de ejecucin. Dichas hebras de control pueden ser
procesos independientes en el sistema operativo o hebras dentro de un
proceso. Una aplicacin multihebra est constituida por distintas hebras
que comparten el espacio de un proceso en el sistema operativo.

Consideraciones
El diseo de aplicaciones concurrentes es ms complejo que el
de aplicaciones secuenciales, ya que hemos de descomponer
el programa en un conjunto de tareas ms o menos
independientes con el fin de aprovechar el paralelismo que
pueda existir. Si no existe ese paralelismo potencial, no tiene
sentido que intentemos descomponer nuestra aplicacin en
tareas independientes.
La implementacin de aplicaciones concurrentes es tambin
ms compleja que la de aplicaciones secuenciales
convencionales porque hemos de garantizar la coordinacin de
las distintas hebras o procesos con los mecanismos de
comunicacin adecuados, adems de velar por la integridad
de los datos con los que stas trabajan simultneamente
(para lo cual hemos de sincronizar el acceso a los mismos).

2 de 4

La depuracin de las aplicaciones concurrentes es


extremadamente difcil, dado que la ejecucin de los distintos
procesos/hebras se realiza de forma independiente y las
operaciones que realizan se pueden entrelazar de cualquier
forma en funcin de cmo les asigne la CPU el sistema
operativo.
Cada hebra/proceso supone una carga adicional para el
sistema (p.ej. los cambios de contexto son costosos,
especialmente en el caso de los procesos). Hay que tener en
cuenta la eficiencia de la implementacin resultante, que
puede medirse en funcin del tiempo de respuesta del sistema
o de la cantidad de trabajo que realiza por unidad de tiempo
[throughput].

Por qu usar hebras y procesos?


El uso de paralelismo (mltiples procesos y hebras, en particular)
proporciona una serie de ventajas frente a las limitaciones de los
sistemas monotarea.
Ejemplo
Supongamos que nuestra aplicacin
tiene que ocuparse de la realizacin de
copias de seguridad de los datos con los
que trabaja. Con una nica hebra
tendramos que programar las copias de
seguridad fuera del horario habitual de
trabajo (y si tiene que funcionar las 24
horas del da?). Con varias hebras,
podemos aprovechar los perodos de
inactividad del sistema.
El diseo correcto de una aplicacin concurrente puede permitir que un
programa complete una mayor cantidad de trabajo en el mismo perodo
de tiempo (como suceda en el ejemplo antes mencionado) pero
tambin sirve para otros menesteres ms mundanos, desde la creacin
de interfaces que respondan mejor a las rdenes del usuario hasta la
creacin de aplicaciones que den servicio a varios clientes (como puede
ser cualquier aplicacin web a la que varios usuarios pueden acceder
simultneamente).

En la interfaz de usuario
Cuando una aplicacin tiene que realizar alguna tarea larga, su interfaz
debera seguir respondiendo a las rdenes que el usuario efecte.
Hebras o procesos independientes pueden encargarse de realizar las
operaciones costosas mientras que la hebra principal de la aplicacin
sigue gestionando los eventos procedientes de la interfaz de usuario.

3 de 4

Establecimiento de prioridades
Como es lgico, se le asigna mayor
prioridad a las tareas ms importantes
(vg: las que requieran una respuesta
ms rpida).

Aprovechamiento de los recursos del sistema


Cuando se utiliza una sola hebra, el programa debe detener
completamente la ejecucin mientras espera a que se realice cada
tarea. La CPU permanece ocupada completamente (o inactiva) hasta
que el proceso actual termine. Si se utilizan varias hebras, el sistema
puede usarse para realizar varias tareas simultneamente (vg:
reproduccin de MP3s en background).
Paralelismo real
En un sistema multiprocesador, si la aplicacin se descompone en
varias hebras, el sistema operativo podr asignar cada una a una de
las CPUs del sistema.

Modularizacin: Paralelismo implcito


En muchas ocasiones, un programa puede disearse como varios
procesos paralelos que funcionen de forma independiente. La
descomposicin de una aplicacin en varias hebras puede resultar muy
beneficiosa:
Se puede simplificar la implementacin de un sistema si una
secuencia compleja de operaciones se puede descomponer en
una serie de tareas independientes que se ejecuten
concurrentemente.
Tareas independientes se implementan por separado (menor
acoplamiento entre las distintas partes del sistema)
Un diseo modular facilita la incorporacin
ampliaciones en nuestras aplicaciones.

de

futuras

4 de 4

IMPORTANTE
El objetivo principal del uso de
paralelismo es mejorar el rendimiento
del sistema. El diseador/programador
deber decidir hasta qu punto debe
utilizarse en cada momento.
En cualquier caso, el uso de paralelismo, y de hebras en particular, es
ms comn de lo que podra pensarse en un principio (y menos de lo
que debera).

Vous aimerez peut-être aussi