Title: Temas fundamentales del Curso
1Temas fundamentales del Curso
Conceptos básicos. Concurrencia y arquitecturas
de procesamiento. Multithreading, Procesamiento
Distribuido, Procesamiento Paralelo.
Concurrencia por memoria compartida. Procesos y
sincronización. Locks y Barreras. Semáforos.
Monitores. Resolución de problemas concurrentes
con sincronización por memoria compartida.
Concurrencia por pasaje de mensajes(MP). Mensajes
asincrónicos. Mensajes sincrónicos. Remote
Procedure Call (RPC). Rendezvous. Paradigmas de
interacción entre procesos.
Introducción a la programación paralela.
Lenguajes, compiladores, bibliotecas y
herramientas de desarrollo.
Programación Concurrente 2004 - Clase 1
2MetodologÃa del Curso 2004
TeorÃa. Material para leer (bibliografÃa,
InterNet, etc). Posibilidad de promoción de la
TeorÃa. Preguntas teóricas en las clases. Pruebas
teóricas para la promoción.
Práctica. Explicaciones y atención de
consultas. Un examen parcial. Es necesario
aprobarlo para que se corrijan los exámenes
teóricos de la promoción.
Exposición final para los que tengan la
promoción. Coloquio sobre un tema preparado por
el alumno.
Programación Concurrente 2004 - Clase 1
3Objetivos del Curso
Plantear los fundamentos de la programación
concurrente, estudiando su sintaxis y semántica,
asà como herramientas y lenguajes para la
resolución de programas concurrentes.
Analizar el concepto de sistemas concurrentes que
integran la arquitectura de hardware, el sistema
operativo y los algoritmos que permiten la
resolución de problemas concurrentes.
Estudiar los conceptos fundamentales de
comunicación y sincronización entre procesos, por
memoria compartida y por mensajes.
Vincular la concurrencia en software con los
conceptos de procesamiento distribuido y
paralelo, para tener los conceptos de soluciones
multiprocesador con algoritmos concurrentes.
Programación Concurrente 2004 - Clase 1
4El escenario de la Concurrencia
Múltiples automóviles tratando de ir desde el
punto A al punto B. Una ruta, un carril ?
secuencialidad, colisiones. Una ruta, múltiples
carriles ? paralelismo, interacciones
(?) Múltiples rutas? procesamiento distribuido,
heterogeneidad.
El ejemplo tiene la esencia de la
concurrencia Los automóviles son tareas que
deben ejecutarse. Los carriles y las rutas
alternativas son los múltiples procesadores. Siemp
re los automóviles deberán sincronizarse (por
ejemplo por las luces del tráfico) para no
colisionar. La noción de paralelo y distribuido.
Programación Concurrente 2004 - Clase 1
5 Conceptos de Concurrencia
- Un thread de control ? programación secuencial,
monoprocesador. - Múltiples threads de control? procesos?
concurrencia. - Los procesos se comunican y sincronizan, en base
a dos criterios - Exclusión mútua en el acceso a secciones crÃticas
de código. - Espera por condición.
La historia de la concurrencia? En los 60s ?
Evolución de los sistemas operativos.
Controladores de dispositivos independientes(canal
es). Multiprogramación. En los 70s?
Formalización de la concurrencia en los
lenguajes. En los 80s? Redes, procesamiento
distribuido. En los 90s ? MPP , InterNet, CS,
Web computing... Hoy? Cluster computing, Grid
computing, Procesamiento masivo de datos
distribuidos, Real Time Distributed systems...
Programación Concurrente 2004 - Clase 1
6Algunos conceptos del Hardware.
Procesadores y niveles de memoria. Memoria
primaria. Memoria Caché. Niveles de memoria Caché.
Multiprocesadores de memoria compartida. Esquemas
UMA (Uniform memory access) con Bus o Swith.
(arquitecturas SMP- Symmetric multiprocessors) Esq
uemas NUMA para mayor número de procesadores
distribuidos.
Multiprocesadores con memoria distribuida. Grado
de acoplamiento de los procesadores. Memoria
compartida distribuida.
Programación Concurrente 2004 - Clase 1
7Concurrencia Clases de Aplicaciones
El primer tipo de aplicaciones se corresponde
cuando ejecutamos N procesos independientes sobre
M procesadores, con N gt M. Un sistema de software
de multithreading maneja simultáneamente tareas
independientes, asignando (por ejemplo por
tiempos) los procesadores de que dispone.
- Ejemplos tÃpicos
- Sistemas de ventanas en PCs o WS.
- Time sharing en sistemas operativos
multiprocesador. - Sistemas de tiempo real en plantas industriales.
Programación Concurrente 2004 - Clase 1
8Concurrencia Clases de Aplicaciones
El segundo tipo de aplicaciones es el cómputo
distribuido una red de comunicaciones vincula
procesadores diferentes sobre los que se ejecutan
procesos que se comunican esencialmente por
mensajes. Cada componente del sistema distribuido
puede hacer a su vez multithreading.
- Ejemplos tÃpicos
- Servidores de archivos (recursos) en una red.
- Sistemas de Bases de datos distribuidas (bancos,
reservas de vuelos). - Servidores WEB distribuidos.
- Arquitecturas cliente-servidor.
- Sistemas tolerantes a fallas.
Programación Concurrente 2004 - Clase 1
9Concurrencia Clases de Aplicaciones
El procesamiento paralelo es el tercer tipo de
aplicaciones. Se trata de resolver un dado
problema en el menor tiempo posible, utilizando
una arquitectura multiprocesador en la que se
pueda distribuir la tarea global en tareas
(independientes? interdependientes?) que puedan
ejecutarse en diferentes procesadores. Paralelismo
de datos y paralelismo de procesos.
- Ejemplos tÃpicos
- Cálculo cientÃfico. Modelos de sistemas
(meteorologÃa, movimiento planetario). - Gráficos, procesamiento de imágenes, realidad
virtual, procesamiento de video. - Problemas combinatorios y de optimización lineal
y no lineal. Modelos econométricos.
Programación Concurrente 2004 - Clase 1
10Paradigmas de resolución de programas
concurrentes
Si bien el número de aplicaciones es muy grande,
en general los patrones de resolución
concurrente son pocos 1-Paralelismo iterativo,
2-paralelismo recursivo, 3-productores y
consumidores, 4-clientes y servidores, 5-pares
que interactúan.
En el paralelismo iterativo un programa tiene un
conjunto de procesos (posiblemente idénticos)
cada uno de los cuáles tiene uno o más loops. Es
decir cada proceso es un programa iterativo. La
idea es que si estos procesos cooperan para
resolver un único problema (ejemplo un sistema de
ecuaciones) pueden trabajar independientemente y
sincronizar por memoria compartida o envÃo de
mensajes.
Programación Concurrente 2004 - Clase 1
11Paradigmas de resolución de programas
concurrentes
En el paralelismo recursivo el problema general
(programa) puede descomponerse en procesos
recursivos que trabajan sobre partes del conjunto
total de datos. Ejemplos clásicos son por ejemplo
el sorting by merging o el cálculo de raÃces en
funciones continuas.
Los esquema productor-consumidor muestran
procesos que se comunican. Es habitual que estos
procesos se organicen en pipes a través de los
cuáles fluye la información. Cada proceso en el
pipe es un filtro que consume la salida de su
proceso predecesor y produce una salida para el
proceso siguiente.
Programación Concurrente 2004 - Clase 1
12Paradigmas de resolución de programas
concurrentes
Cliente-servidor es el esquema dominante en las
aplicaciones de procesamiento distribuido. Los
servidores son procesos que esperan pedidos de
servicios de múltiples clientes. Naturalmente
unos y otros pueden ejecutarse en procesadores
diferentes. Los mecanismos de invocación son
variados (rendezvous y RPC por ejemplo). El
soporte distribuido puede ser muy simple (LAN) o
extendido a toda la WEB.
En los esquemas de pares que interactúan los
procesos (que forman parte de un programa
distribuido) resuelven partes del problema
(normalmente mediante código idéntico) e
intercambian mensajes para avanzar en la tarea.
El esquema permite mayor grado de asincronismo
que C-S.
Programación Concurrente 2004 - Clase 1
13Procesamiento Secuencial y Concurrente.
Analizar la resolución secuencial y
mono-procesador (UNA máquina) de la fabricación
de un objeto compuesto por N partes o módulos.
La solución secuencial nos fuerza a establecer un
estricto orden temporal. Al disponer de sólo una
máquina el ensamblado final del objeto sólo se
podrá realizar luego de N pasos de procesamiento
o fabricación.
Programación Concurrente 2004 - Clase 1
14Procesamiento Secuencial y Concurrente.
Ahora supongamos que tenemos N máquinas, una por
componente o módulo a fabricar para ensamblar el
objeto. Si no hubiera dependencia de la materia
prima, cada una de las N máquinas puede trabajar
al mismo tiempogtMENOR tiempo para completar el
procesogtParalelismo del hardware.
Dificultades Distribución de la carga de
trabajo, Necesidad de compartir recursos,
Necesidad de esperarse en puntos clave, Necesidad
de comunicarse, Dificultad con las fallas
aisladas, Asignación de una de las N máquinas
para efectuar el ensamblado final (Cual??).
Un concepto importante que surge de este ejemplo
es el de Speed-Up.
Programación Concurrente 2004 - Clase 1
15Procesamiento Secuencial y Concurrente.
Hemos visto la solución secuencial directa y la
solución paralela (multiplicando el hardware) en
el problema de la fabricación de un objeto
(sistema) de múltiples componentes (módulos).
Ahora supongamos otro enfoque una sóla máquina
le dedica una parte del tiempo a cada componente
del objeto finalgt Concurrencia sin paralelismo
de hardwaregt Menor speed-up.
Dificultades Distribución de la carga de
trabajo, Necesidad de compartir recursos,
Necesidad de esperarse en puntos clave, Necesidad
de comunicarse, Dificultad con las fallas de
software aisladas, Necesidad de recuperar el
estado de cada proceso al retomarlo.
La concurrencia es un concepto de software no
restringido a una arquitectura particular de
hardware ni a un número determinado de
procesadores.
Programación Concurrente 2004 - Clase 1
16Programa Concurrente
Un programa concurrente especifica dos o más
programas secuenciales que pueden ejecutarse
concurrentemente en el tiempo como tareas o
procesos.
Un proceso o tarea es un elemento concurrente
abstracto que puede ejecutarse simultáneamente
con otros procesos o tareas, si el hardware lo
permite. (recordar los TASKs de ADA).
Un programa concurrente puede tener N procesos
habilitados para ejecutarse concurrentemente y un
sistema concurrente puede disponer de M
procesadores cada uno de los cuales puede
ejecutar uno o más procesos.
Programación Concurrente 2004 - Clase 1
17Objetivos de los sistemas concurrentes
Ajustar el modelo de arquitectura de hardware y
software al problema del mundo real a resolver.
Incrementar la perfomance, mejorando los tiempos
de respuesta de los sistemas de procesamiento de
datos, a través de un enfoque diferente de la
arquitectura fÃsica y lógica de las soluciones.
Algunas ventajas que merecen comentarse son la
velocidad de ejecución que se puede alcanzar, la
mejor utilización de la CPU de cada procesador, y
la explotación de la concurrencia inherente a la
mayorÃa de los problemas reales.
Programación Concurrente 2004 - Clase 1
18Areas de estudio en Programación Concurrente
ELECCION DE LA GRANULARIDAD Significa optimizar
(para una dada aplicación) la relación entre el
número de procesadores y el tamaño de la memoria
total.
MANEJO DE LOS RECURSOS Asignación de recursos
compartidos, métodos de acceso a los recursos,
bloqueo y liberación de recursos, seguridad y
consistencia de los recursos.
SINCRONIZACIÓN Se debe asegurar el orden
correcto (incluyendo el tiempo) de las acciones
que los procesos ejecutan. Este orden es dinámico
e interdependiente.El objetivo de la
sincronización es restringir las historiaso
threads de un programa concurrente sólo a las
permitidas.
Programación Concurrente 2004 - Clase 1
19Sincronización en Programación Concurrente
Sincronización por exclusión mútua Significa
asegurar que sólo un proceso tenga acceso a un
recurso compartido en un instante de tiempo. Si
el programa tiene secciones crÃticas que pueden
compartir más de un proceso, la exclusión mútua
evita que dos o más procesos puedan encontrarse
en la misma sección crÃtica al mismo tiempo.
Sincronización por condición Debe permitir
bloquear la ejecución de un proceso hasta que se
cumpla una condición dada.
Ejemplos de los dos mecanismos de sincronización
en un problema de utilización de un área de
memoria compartida (buffer limitado con
productores y consumidores).
Programación Concurrente 2004 - Clase 1
20Comunicación y Prioridad en Programación
Concurrente
La comunicación entre procesos concurrentes
indica el modo en que se organiza y trasmiten
datos entre tareas concurrentes. Esta
organización requiere especificar protocolos para
controlar el progreso y corrección de la
comunicación. Los protocolos deben contemplar la
posibilidad de pérdida de información.
Un proceso que tiene mayor prioridad puede causar
la suspensión (pre-emption) de otro proceso
concurrente. Análogamente puede tomar un recurso
compartido, obligando a retirarse a otro proceso
que lo tenga en un instante dado.
Programación Concurrente 2004 - Clase 1
21Conceptos relacionados con la Programación
Concurrente
Dos o más procesos pueden entrar en deadlock, si
por un error en la programación concurrente ambos
se quedan esperando que el otro libere un recurso
compartido.La ausencia de deadlock es una
propiedad necesaria en los procesos concurrentes.
Una propiedad deseable en los sistemas
concurrentes es el equilibrio en el acceso a los
recursos compartidos por todos los procesos
(fairness).
Dos situaciones NO deseadas en los programas
concurrentes son la inanición de un proceso (no
logra acceder a los recursos compartidos) y el
overloading de un proceso (la carga asignada
excede su capacidad de procesamiento).
Programación Concurrente 2004 -
Clase 1
22Desventajas de la Programación Concurrente
En Programación Concurrente los procesos no son
completamente independientes y comparten
recursos. La necesidad de utilizar mecanismos de
exclusión mútua y sincronización agrega
complejidad a los programas gt menor
confiabilidad.
Los procesos iniciados dentro de un programa
concurrente pueden NO estar vivos. Esta pérdida
de la propiedad de liveness puede indicar
deadlocks o una mala distribución de recursos.
Hay un no determinismo implÃcito en el
interleaving de los procesos concurrentes. Esto
significa que dos ejecuciones del mismo programa
no necesariamente son idénticas gt dificultad
para la interpretación y debug.
La comunicación y sincronización produce un
overhead de tiempo, inútil para el procesamiento
? Perder perfomance
Programación Concurrente 2004 - Clase 1
23Problemas asociados con la Programación
Concurrente
La mayor complejidad en la especificación de los
procesos concurrentes significa que los lenguajes
de programación tienen requerimientos
adicionales. gt mayor complejidad en los
compiladores y sistemas operativos asociados.
Aumenta el tiempo de desarrollo y puesta a punto
respecto de los programas secuenciales. También
puede aumentar el costo de los errores gt mayor
costo de los ambientes y herramientas de
IngenierÃa de Software de sistemas concurrentes.
La paralelización de algoritmos secuenciales NO
es un proceso directo, que resulte fácil de
automatizar.
Para obtener una real mejora de perfomance, se
requiere adaptar el software concurrente al
hardware paralelo.
Programación Concurrente 2004 - Clase 1
24Mecanismos de comunicación y sincronización entre
procesos.
Memoria compartida Los procesos intercambian
mensajes sobre la memoria compartida o actúan
coordinadamente sobre datos residentes en ella.
Lógicamente los procesos no pueden operar
simultáneamente sobre la memoria compartida, lo
que obligará a BLOQUEAR y LIBERAR el acceso a la
memoria. La solución más elemental será una
variable de control tipo semáforo que habilite
o no el acceso de un proceso a la memoria
compartida.
Pasaje de Mensajes Es necesario establecer un
canal (lógico o fÃsico) para trasmitir
información entre procesos. También el lenguaje
debe proveer un protocolo adecuado. Para que la
comunicación sea efectiva los procesos deben
saber cuando tienen mensajes para leer y cuando
deben trasmitir mensajes.
Programación Concurrente 2004 - Clase 1
25Mecanismos de comunicación y sincronización entre
procesos.
Independientemente del mecanismo de comunicación
/ sincronización entre los procesos, los
lenguajes de programación concurrente deberán
proveer primitivas adecuadas para la
especificación e implementación de las mismas.
- De un lenguaje de programación concurrente se
requiere - Indicar las tareas o procesos que pueden
ejecutarse concurrentemente. - Mecanismos de exclusión mútua.
- Mecanismos de comunicación entre los procesos.
- Recordar el ejemplo de ADA.
Programación Concurrente 2004 - Clase 1
26Resumen de conceptos
La Concurrencia es un concepto de software. La
Programación Paralela se asocia con la ejecución
concurrente en múltiples procesadores que pueden
tener memoria compartida. La Programación
DistribuÃda es un caso de concurrencia con
múltiples procesadores y sin memoria compartida.
En Programación Concurrente la organización de
procesos y procesadores constituyen la
arquitectura del sistema concurrente.
Especificar la concurrencia es esencialmente
especificar los procesos concurrentes, su
comunicación y sincronización.
Programación Concurrente 2004 - Clase 1
27Paradigmas de resolución de programas
concurrentes
Si bien el número de aplicaciones es muy grande,
en general los patrones de resolución
concurrente son pocos 1-Paralelismo iterativo,
2-paralelismo recursivo, 3-productores y
consumidores, 4-clientes y servidores, 5-pares
que interactúan.
En el paralelismo iterativo un programa tiene un
conjunto de procesos (posiblemente idénticos)
cada uno de los cuáles tiene uno o más loops. Es
decir cada proceso es un programa iterativo. La
idea es que si estos procesos cooperan para
resolver un único problema (ejemplo un sistema de
ecuaciones) pueden trabajar independientemente y
sincronizar por memoria compartida o envÃo de
mensajes.
Programación Concurrente 2004 - Clase 1
28Paralelismo iterativo multiplicación de
matrices.
La solución secuencial double an,n, bn,n,
cn,n for i 0 to n-1 for
j 0 to n-1 compute inner
product of ai, and b,j ci,j
0.0 for k 0 to n-1
ci,j ci,j ai,kbk,j
El loop interno (Ãndice k) calcula el producto
interior de la fila i de la matriz a por la
columna j de la matriz b y obtiene
ci,j. Acciones paralelas posibles...
Programación Concurrente 2004 - Clase 1
29Multiplicación de matrices. Paralelismo por
filas o columnas.
co i 0 to n-1 Calcula las filas en
paralelo for j 0 to n-1 ci,j
0.0 for k 0 to n-1 ci,j ci,j
ai,kbk,j
co j 0 to n-1 Calcula las columnas en
paralelo for i 0 to n-1 ci,j
0.0 for k 0 to n-1 ci,j ci,j
ai,kbk,j
Programación Concurrente 2004 - Clase 1
30Multiplicación de matrices. Ahora con n2
procesos.
co i 0 to n-1, j 0 to n-1 TODAS las
filas y columnas ci,j 0.0 for k
0 to n-1 ci,j ci,j
ai,kbk,j
co i 0 to n-1 FILAS en paralelo co
j 0 to n-1 COLUMNAS en paralelo
ci,j 0.0 for k 0 to n-1 ci,j
ci,j ai,kbk,j
Programación Concurrente 2004 - Clase 1
31Multiplicación de matrices. P procesadores con
N/P gt 1.
Un procesador WORKER se encargará de un
subconjunto de filas o columnas de la matriz
resultado. El tamaño del strip óptimo es un
problema muy interesante para balancear costo de
procesamiento con costo de comunicaciones.
process workerw 1 to P strips en
paralelo int first (w-1) n/P Primer fila
del strip int last first n/P - 1 Ultima
fila del strip for i first to last
for j 0 to n-1 ci,j
0.0 for k 0 to n-1
ci,j ci,j ai,kbk,j
Programación Concurrente 2004 - Clase 1
32Aspectos de la Programación Secuencial
Toda la Programación Secuencial se puede expresar
con 3 clases de instrucciones básicas
ASIGNACIÓN, ALTERNATIVA (decisión) e ITERACION
(repetición con condición).
- ? asignación simple x e,
- ? sentencia compuesta asignación x x 1 y
y 1 z xy - ? swap v1 v2
- ? skip Termina inmediatamente y no tiene efecto
sobre ninguna variable de programa.
Programación Concurrente 2004 - Clase 1
33Aspectos de la Programación Secuencial
? Sentencias de alternativa IF B ? S
B expresión booleana (condición), S
una instrucción simple o compuesta B guarda a S
pues S no se ejecuta si B no es verdadera. Puede
existir una condición ELSE para B.
En muchos casos pueden existir alternativas
múltiples (CASE) Las guardas son evaluadas en
algún orden arbitrario. Elección no
determinÃstica. Si ninguna B es verdadera, el IF
no tiene efecto
Programación Concurrente 2004 - Clase 1
34Aspectos de la Programación Secuencial
- ? Sentencias de alternativa iterativa múltiple
- DO B1 ? S1
- B2 ? S2
- .......
- Bn ? Sn
- OD
Las sentencias guardadas son evaluadas y
ejecutadas hasta que todas las guardas sean
falsas. (relacionar con el SELECT ACCEPT de
ADA). La elección es no determinÃstica si más de
una guarda es verdadera.
Programación Concurrente 2004 - Clase 1
35Aspectos de la Programación Secuencial
La repetición e iteración tienen una forma
general que se puede expresar con una instrucción
del tipo FOR-ALL FA cuantificadores ? Secuencia
de Instrucciones AF Cada cuantificador
especifica un rango de valores para una variable
de iteración (con un rango y una condición Such
That) variable expr_inicial to expr_final st B
- El cuerpo del for-all se ejecuta una vez por cada
valor de la variable de iteración. - Si hay cláusula such-that, la variable de
iteración toma sólo los valores para los que B es
verdadera. - Si hay más de un cuantificador el cuerpo del fa
se ejecuta para cada combinación de valores.
Programación Concurrente 2004 - Clase 1
36Concurrencia y Sincronización
- Programa concurrente ? dos o más procesos
cooperantes. - Múltiples threads de control (en el mismo t ?),
uno por cada proceso. - Los procesos interactúan comunicándose ?
sincronización
Problema ? interferencia un proceso toma una
acción que invalida las suposiciones hechas por
otro proceso. co S1 // ..... // Sn oc
ejecuta las Si concurrentemente La ejecución del
co termina cuando todas las Si teminaron
Programación Concurrente 2004 - Clase 1
37Acciones atómicas y sincronización
Ejecución de un programa concurrente ?
interleaving de las acciones atómicas ejecutadas
por procesos individuales Interacción ? no todos
los interleavings son aceptables. La
sincronización debe prevenir los interleavings
indeseables.
Sincronizar gt Combinar acciones atómicas de
grano fino (fine-grained) en acciones
(compuestas) de grano grueso (coarse grained) que
den la exclusión mutua.
Sincronizargt Demorar un proceso hasta que el
estado de programa satisfaga algún predicado (por
condición).
Programación Concurrente 2004 - Clase 1
38Acciones atómicas y sincronización. Atomicidad de
grano fino.
Acción atómica ? hace una transformación de
estado indivisible Los estados intermedios en la
implementación de la acción no deben ser visibles
para los otros procesos ? Se debe implementar
por Hardware.
Analicemos la atomicidad de la operación de
asignación... ab
La lectura y escritura de las variables x,y,z son
atómicas. y 1 x 0 z2 co x y z // y
x y // z 4 oc ? Analicemos los posibles
resultados si tenemos tres procesadores
ejecutando los procesos concurrentes (no
necesariamente de la misma velocidad)
Programación Concurrente 2004 - Clase 1
39Acciones atómicas y sincronización. Atomicidad de
grano fino.
Cuáles serÃan los posibles threads del
programa concurrente especificado??
Qué sucederÃa si tenemos un cambio en el tercer
proceso y 1 x 0 z2 co x y z // y
x y // z z - 1 oc
- Se podrÃa probar corrección??
Programación Concurrente 2004 - Clase 1
40Acciones atómicas y sincronización
En lo que sigue, supondremos máquinas con las
siguientes caracterÃsticas Los valores de los
tipos básicos se almacenan en elementos de
memoria leÃdos y escritos como acciones atómicas
Los valores se cargan en registros, se opera
sobre ellos, y luego se almacenan los resultados
en memoria
Cada proceso tiene su propio conjunto de
registros
Todo resultado intermedio de evaluar una
expresión se almacena en registros o en memoria
privada del proceso
Programación Concurrente 2004 - Clase 1
41Acciones atómicas y sincronización
? Si una expresión e en un proceso no referencia
una variable alterada por otro proceso, la
evaluación será atómica, aunque requiera ejecutar
varias acciones atómicas de grano fino.
? Si una asignación xe en un proceso no
referencia ninguna variable alterada por otro
proceso, la ejecución de la asignación será
atómica
Pero... normalmente los programas concurrentes no
son disjuntos
? De algún modo habrá que proteger la variable
compartida o especificar un orden de precedencia
en las posibles operaciones concurrentes.
Programación Concurrente 2004 - Clase 1
42Especificación de la sincronización.
En general, necesitamos ejecutar secuencias de
sentencias como una única acción atómica
?Mecanismo de sincronización para construir una
acción atómica de grano grueso (coarse grained)
como secuencia de acciones atómicas fine grained
que aparecen como indivisibles.
En lo que sigue ?e? indica que la expresión e
debe ser evaluada atómicamente
Programación Concurrente 2004 - Clase 1
43Especificación de la sincronización.
await se debe implementar en su forma más general
(exclusión mutua y sincronización por condición)
Sólo exclusión mutua ? ?S? Ejemplo
? x x 1 y y 1 ?
El estado interno en el cual x e y son
incrementadas resulta invisible a los otros
procesos que referencian x o y.
Programación Concurrente 2004 - Clase 1
44Especificación de la sincronización.
Sincronización por condición ? ? await B
? Ejemplo ? await count gt 0 ?
?await B? puede ser implementado como busy
waiting o spinning do (not B) ? skip od
Acción atómica incondicional ? no contiene una
condición B Acción atómica condicional ?
sentencia await con guarda B
Programación Concurrente 2004 - Clase 1
45Propiedades de seguridad(safety) y vida(liveness)
en Concurrencia
Una propiedad de un programa concurrente es un
atributo que resulta verdadero para cualquiera de
los threads de ejecución del mismo. Toda
propiedad puede ser formulada en términos de dos
clases de propiedades seguridad y vida.
La clase de propiedades de seguridad se refiere
a la NO ocurrencia de eventos malos. Por
ejemplo son clásicas las propiedades de seguridad
ausencia de deadlock y ausencia de interferencia
(exclusión mútua) entre procesos.
La clase de propiedades de vida se refiere a la
posibilidad de ocurrencia de eventos buenos.
Por ejemplo son clásicas asegurar que un pedido
de servicio será atendido, asegurar que un
mensaje llega a destino, que un proceso
eventualmente alcanzará su sección crÃtica, etcgt
dependen de las polÃticas de scheduling.
Programación Concurrente 2004 - Clase 1
46Propiedades de procesos concurrentes
Fairness trata de garantizar que los procesos
tengan chance de avanzar, sin importar lo que
hagan los demás
Una acción atómica en un proceso es elegible si
es la próxima acción atómica en el proceso que
será ejecutado Si hay varios procesos, hay varias
acciones atómicas elegibles
- Una polÃtica de scheduling determina cuál será la
próxima en ejecutarse
Programación Concurrente 2004 - Clase 1
47Propiedades de procesos concurrentes
Fairness Incondicional. Una polÃtica de
scheduling es incondicionalmente fair si toda
acción atómica incondicional que es elegible
eventualmente es ejecutada.
Fairness Débil. Una polÃtica de scheduling es
débilmente fair si es incondicionalmente fair y
toda acción atómica condicional que se vuelve
elegible eventualmente es ejecutada si su guarda
se convierte en true y de allà en adelante
permanece true.
No es suficiente para asegurar que cualquier
sentencia await elegible eventualmente se
ejecuta la guarda podrÃa cambiar el valor (de
false a true y nuevamente a false) mientras un
proceso está demorado. (Recordar el caso de
lectores-escritores de ADA)
Programación Concurrente 2004 - Clase 1
48Propiedades de procesos concurrentes
Fairness Incondicional. Una polÃtica de
scheduling es incondicionalmente fair si toda
acción atómica incondicional que es elegible
eventualmente es ejecutada.
Fairness Fuerte Una polÃtica de scheduling es
fuertemente fair si es incondicionalmente fair y
toda acción atómica condicional que se vuelve
elegible eventualmente es ejecutada pues su
guarda se convierte en true con infinita
frecuencia.
Relacionar lo anterior con los esquemas de
scheduling que tienen memoriapara favorecer a
los procesos retrasadosgt Prioridad dinámica.
Programación Concurrente 2004 - Clase 1
49Tareas para la próxima clase
- En lo posible leer los cápÃtulos 1 y 2 del texto
Foundations of Mutithreaded, Parallel and
Distributed Programming de Gregory Andrews.
Addison Wesley 2000. Leer los ejemplos de
paralelismo recursivo, productores y
consumidores, clientes y servidores y el código
de la multiplicación de matrices distribuida del
CapÃtulo 1 del Andrews. - Investigue las primitivas de programación
concurrente de un lenguaje de programación que NO
sea ADA.
Analice un caso conocido de accion atómica de
grano grueso una transacción completa sobre una
BD. Explique como protegerÃa la atomicidad de la
misma, suponiendo que hay acceso concurrente a la
BD. Qué significa el AWAIT en este caso?
Programación Concurrente 2004 - Clase 1