Temas fundamentales del Curso - PowerPoint PPT Presentation

About This Presentation
Title:

Temas fundamentales del Curso

Description:

Temas fundamentales del Curso Conceptos b sicos. Concurrencia y arquitecturas de procesamiento. Multithreading, Procesamiento Distribuido, Procesamiento Paralelo. – PowerPoint PPT presentation

Number of Views:132
Avg rating:3.0/5.0
Slides: 50
Provided by: Sergi163
Category:

less

Transcript and Presenter's Notes

Title: Temas fundamentales del Curso


1
Temas 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
2
Metodologí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
3
Objetivos 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
4
El 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
6
Algunos 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
7
Concurrencia 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
8
Concurrencia 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
9
Concurrencia 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
10
Paradigmas 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
11
Paradigmas 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
12
Paradigmas 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
13
Procesamiento 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
14
Procesamiento 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
15
Procesamiento 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
16
Programa 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
17
Objetivos 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
18
Areas 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
19
Sincronizació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
20
Comunicació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
21
Conceptos 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
22
Desventajas 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
23
Problemas 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
24
Mecanismos 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
25
Mecanismos 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
26
Resumen 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
27
Paradigmas 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
28
Paralelismo 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
29
Multiplicació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
30
Multiplicació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
31
Multiplicació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
32
Aspectos 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
33
Aspectos 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
34
Aspectos 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
35
Aspectos 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
36
Concurrencia 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
37
Acciones 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
38
Acciones 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
39
Acciones 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
40
Acciones 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
41
Acciones 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
42
Especificació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
43
Especificació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
44
Especificació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
45
Propiedades 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
46
Propiedades 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
47
Propiedades 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
48
Propiedades 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
49
Tareas 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
Write a Comment
User Comments (0)
About PowerShow.com