Académique Documents
Professionnel Documents
Culture Documents
CONCURRENTE Y PARALELA
EVOLUCION DE LA
PROGRAMACION CONCURRENTE
Aos 60 - Sistemas operativos
Aos 70 - Avances en programacin concurrente.
Concepto de proceso y ejecucin concurrente
Aos 80 - Aparicin de Ada. Pocos desarrollos
posteriores, en general relacionados con tiempo real.
Se enfatiza en otros paradigmas (objetos, declarativa,
etc.)
Aos 90 - Aparicin de la Web y la programacin con
procesos ligeros. Reactivacin de la programacin
concurrente
PROGRAMA SECUENCIAL
PROGRAMA CONCURRENTE
PROBLEMA COTIDIANO
La abuela nos quiere hacer un regalo. Un
sweter confeccionado a mano.
Datos:
Lana
Agujas
Patrn
Medidas
Proceso:
Secuencial
Paralelo
Concurrente
Forma Secuencial
Brazo izqdo
Brazo dcho
Espalda
Frente
Unin
Forma Paralelo
Brazo izqdo
Brazo dcho
Espalda
Frente
Unin
PARALELO:
VENTAJAS
Reduccin del tiempo necesario
Reduccin del esfuerzo
INCONVENIENTES
Necesidad
Necesidad
Necesidad
Necesidad
Necesidad
de
de
de
de
de
CONCURRENTE
Brazo izdo.
Brazo dcho.
Frente
Espalda
Unin de todo
Uso de un temporizador
La abuela distribuye el tiempo dedicado a
cada tarea
CONCURRENTE:
INCONVENIENTES
Los mismos que la programacin
paralela
Los mismos que la programacin
secuencial
VENTAJAS
La implementacin puede ser paralela o
secuencial
NO DEPENDE DE LA ARQUITECTURA
UTILIZADA
DEFINICIONES
PROCESO: Programa capaz de ejecutarse
en paralelo
PROCESADOR: Dispositivo hardware capaz
de ejecutar procesos
UNI-PROCESADOR: Computador que
contiene un nico procesador
MULTI-PROCESADOR: Computador que
contiene varios procesadores
SEMANTICA SECUENCIAL
( Est
Est )
SEMANTICA CONCURRENTE
Los programas concurrentes no terminan
La semntica de un programa no es una
funcin de estados
La caracterstica fundamental es que el
comportamiento es no determinista
El orden de ejecucin de las sentencias no
puede ser prederminado
Existen interferencias de unas partes del
programa en otras
MOTIVACION CONCURRENCIA
1. VELOCIDAD DE EJECUCION
Existen aplicaciones donde la velocidad de
respuesta es crtica
Tenemos varios procesos y varios (nmero
menor) procesadores
No es aplicable la programacin paralela. No
coincide nmero de procesos y procesadores
En este caso la programacin concurrente puede
mejorar el tiempo de respuesta
3. ALGORITMOS CONCURRENTES
Existen programas que son
concurrentes por naturaleza
Problemas de la Programacin
Concurrente
Sincronizacin
Exclusin Mutua
Comunicacin
Prioridades
Sincronizacin
Intercambio de informacin para
coordinar actividades
Ejemplos: caso del sweter, chat,etc.
Exclusin Mutua
Exclusin Mutua: Garanta de que un
nico proceso accede a un recurso en
un determinado instante.
Ejemplo: Cruzar una avenida o
boulevard.
Comunicacin
Comunicacin: Intercambio de datos
en uno u otro sentido entre procesos
Prioridad
Prioridad: Un proceso o comunicacin
que causa una interrupcin en la
ejecucin de otro proceso, se dice
que tiene mayor prioridad
Arquitectura
La arquitectura que suele soportar la
programacin concurrente puede ser
Fuertemente acoplada
Dbilmente acoplada
Ejecucin Concurrente
Un sistema concurrente se compone de un
conjunto de procesos secuenciales
autnomos que se ejecutan de forma
(aparentemente) paralela
Cada proceso tiene un flujo de control
independiente
A veces se habla de procesos con varios
flujos de control (hilos o threads)
Las instrucciones de los procesos se
ejecutan intercalndose unas con otras
(paralelismo lgico)
Procesos
Los sistemas operativos suelen soportar procesos
pesados en un sistema monoprocesador
(multiprogramacin)
Concurrencia en el Lenguaje
VENTAJAS
Programas ms
legibles y fciles de
mantener
Programas ms
porttiles
Se pueden detectar
errores al compilar
No hace falta
sistema operativo
INCONVENIENTES
Distintos modelos de
concurrencia segn
lenguajes
Puede ser difcil de
realizar
eficientemente
Se puede mejorar la
portabilidad con SO
normalizados
Lenguajes concurrentes
Tienen elementos de lenguaje para
Crear procesos concurrentes
Sincronizar su ejecucin
Comunicarse entre s