Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema1 PDF
Tema1 PDF
deGranCanaria
DepartamentodeIngenieraTelemtica
Tema 1: Introduccin a la
Programacin Concurrente
Programacin Concurrente
Escuela Tcnica Superior de
Ingenieros de Telecomunicacin
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Conceptos Fundamentales
La idea de programacin concurrente siempre ha estado asociada a
los sistemas operativos: Un slo procesador de gran capacidad
deba repartir su tiempo entre muchos usuarios.
La programacin de estos sistemas se haca a bajo nivel
(ensamblador). Posteriormente apareceran lenguajes de alto nivel
con soporte para este tipo de programacin.
Su utilizacin y potencial utilidad se apoya en: threads o hilos, java
e internet.
Definicin: Se habla de concurrencia cuando ocurren varios sucesos
de manera contempornea.
En base a esto, la concurrencia en computacin est asociada a la
ejecucin de varios procesos que coexisten temporalmente.
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Programacin Concurrente
Para definirla correctamente, debemos diferencias entre programa
y proceso.
Programa: Conjunto de sentencias/instrucciones que se ejecutan
secuencialmente. Se asemeja al concepto de clase dentro de la POO.
Es por tanto un concepto esttico.
Proceso: Bsicamente, se puede definir como un programa en
ejecucin. Lneas de cdigo en ejecucin de manera dinmica. Se
asemeja al concepto de objeto en POO.
P2(download)
P1(mail)
S.O.
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Concurrencia
La concurrencia aparece cuando dos o ms procesos son contemporneos. Un caso particular es el paralelismo (programacin paralela).
P1
P2
P3
tiempo
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Concurrencia y hardware
Hasta ahora slo hemos hablado del software, aunque el hardware
y su topologa es importante para abordar cualquier tipo de problema.
Sistemas monoprocesador. Podemos tener concurrencia, gestionando el tiempo de procesador para cada proceso.
Tiempo en la CPU
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
En resumen:
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Condiciones de Bernstein
Para que dos conjuntos de instrucciones se puedan ejecutar concurrentemente se tiene que cumplir que:
La interseccin entre el conjunto de variables leidas por uno, con
el conjunto de variables que escribe el otro, debe ser nulo. Y viceversa.
La interseccin del conjunto de variables que escribe uno y el conjunto
que escribe el otro, debe ser nulo.
Ejemplo:
P1:
P2:
P3:
P4:
a=x+y;
b=z-1;
c=a-b;
w=c+1;
L(P1)={x,y}
L(P2)={z}
L(P3)={a,b}
L(P4)={c}
E(P1)={a}
E(P2)={b}
E(P3)={c}
E(P4)={w}
Se debe cumplir:
L(Pi) E(Pj)=;
E(Pi) L(Pj)=;
E(Pi) E(Pj)=;
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Cmara
Lector
Programacin Concurrente
buffer
Gestor
buffer
Impresin
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Procesos
Habamos definido un proceso como un programa en ejecucin.
Pero, cmo se ejecuta?, cundo?, finaliza?, nace, crece y se
reproduce?.
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Procesos
Habamos definido un proceso como un programa en ejecucin.
Pero, cmo se ejecuta?, cundo?, finaliza?, nace, crece y se
reproduce?.
Ciclo de vidad de un proceso
nacimiento
finalizado
listo/ready
ejecucin
CPU
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Espacio de usuario
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
P1
P2
P3
scheduler
Espacio del ncleo
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Procesos de procesos
Qu son?
Para qu?
etc.
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Threads/hilos
Definicin: Una secuencia de control dentro de un proceso que
ejecuta sus instrucciones de forma independiente.
Existe concurrencia a dos niveles: entre procesos y entre threads.
P1
Procesos: entidades pesadas
h1
con espacio en el ncleo.
Cambios de contexto costosos.
Threads: entidades ligeras
en el espacio de usuario.
Cambios de contexto poco
costosos.
P2
P3
hj
h2 Threads
Sistema Operativo
Threads de sistema
CPU CPUs
Programacin Concurrente
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
UniversidaddeLasPalmasdeGranCanaria
DepartamentodeIngenieraTelemtica
Threads/hilos en Java
Java proporciona un API para el uso de hilos: clase Thread dentro
del paquete java.lang.Thread.
Es de gran utilidad tener un lenguaje de alto nivel para programar
concurrentemente utilizando threads/hilos, de ah el potencial y la
fama de Java.
Cuando arranca un programa existe un hilo principal (main), y luego
se pueden generar nuevos hilos que ejecutan cdigo en objetos
diferentes o el mismo.
La clase Thread dispone de una serie de mtodos para caracterizar
el thread/hilo en el programa: isAlive(), isDaemon(), setName(),
setDaemon(), run(), etc.