Vous êtes sur la page 1sur 4

PROGRAMACIÓN

CONCURRENTE
DEFINICIÓN

Se conoce por programación concurrente a la rama


de la informática que trata de las técnicas de
programación que se usan para expresar el
paralelismo entre tareas y para resolver los
problemas de comunicación y sincronización entre
proceso

El principal problema de la programación


concurrente corresponde a no saber en que orden
se ejecutan los programas (en especial los
programas que se comunican). Se debe tener
especial cuidado en que este orden no afecte el
resultado de los programas.
CARACTERISTICAS

Indeterminismo: Las acciones que se


especifican en un programa secuencial
tienen un orden total, pero en un
programa concurrente el orden es
parcial, ya que existe una incertidumbre
sobre el orden exacto de ocurrencia de
ciertos sucesos, esto es, existe un
indeterminismo en la ejecución

Interacción entre procesos: Los


programas concurrentes implican
interacción entre los distintos procesos
que los componen:
Los procesos que comparten recursos y
compiten por el acceso a los mismos.
Los procesos que se comunican entre si
para intercambiar datos.

Gestión de recursos: Los recursos


compartidos necesitan una gestión
especial. Un proceso que desee utilizar un
recurso compartido debe solicitar dicho
recurso, esperar a adquirirlo, utilizarlo y
después liberarlo. Si el proceso solicita el
recurso pero no puede adquirirlo en ese
momento, es suspendido hasta que el
recurso este disponible. La gestión de
recursos compartidos es problemática y
se debe realizar de tal forma que se
eviten situaciones de retraso indefinido (
espera indefinidamente por un recurso) y
de deadlock (bloqueo indefinido o abrazo
mortal).
Ventajas

Permite optimizar el uso de recursos en


sistemas mono/multiprocesador.
Fiable administración de los datos en sistemas
con gran información
Mejor aprovechamiento de la CPU
Permite el desarrollo de aplicaciones que no se
vean afectadas en tiempo real
Permite compartir recursos entre tareas lentas y
tareas rápidas para que las tareas lentas no
retrasen mucho a las rápidas.
Velocidad de ejecución.
Menores tiempos de respuesta.

Desventajas

Consumos de recursos cuando hay


excesos de hilos o procesos
Dificultad de desarrollo.
Dificultad de verificación.
En programas con pocas
instrucciones en mas lento
Si se aplica mal puede llevar a
resultados erroneos.
Lenguajes de programación
concurrente

Ada
Uno de los pocos lenguajes que provee estructuras
embebidas para programación concurrente y
provee herramientas para diseño de software de
seguridad crítica y proyectos grandes que requieran
portabilidad y mantenimiento. Por esta razón la
mayoría de software para aviación esta programado
en Ada que también fue el primer lenguaje
orientado a objetos aceptado mundialmente. El
lenguaje lleva este nombre en honor a Ada Byron
que fue el primer programador del que se tiene
registros, siendo este una mujer e hija del poeta
Lord Byron [ARA].

Occam
Es un lenguaje de procesamiento paralelo
diseñado por un equipo en INMOS en conjunto
con el diseño del procesador transputer, y basado
en CSP. Este lenguaje incorpora soporte para un
grano muy fino, hilos de ejecución fáciles de usar
y un amplio soporte de ambientes
multiprocesadores. Este puede ser usado con
sistemas de memoria compartida o distribuida, y
es una buena opción cuando se requiere
corrección[WOT01].

Vous aimerez peut-être aussi