PDF de programación - Tópicos de programación Concurrente y Paralela

Imágen de pdf Tópicos de programación Concurrente y Paralela

Tópicos de programación Concurrente y Paralelagráfica de visualizaciones

Publicado el 18 de Julio del 2020
967 visualizaciones desde el 18 de Julio del 2020
1,1 MB
60 paginas
Creado hace 8a (26/10/2015)
Tópicos de programación

Concurrente y Paralela



Facultad de Informática UNLP

UNLu

Clase 1 - Conceptos básicos

Material y contenidos

• El material y contenidos del curso es una adaptación de las clases
de la cátedra de Programación Concurrente de la Facultad de
Informática de la Universidad Nacional de La Plata, a cargo del
Profesor Dr. Marcelo Naiouf



• El contenido que abarcaremos contará con dos etapas:

– Etapa I: Contenidos teóricos y conceptuales

– Etapa II: Análisis de un problema a resolver, resolución y evolución de las

soluciones: secuencial, memoria compartida, pasaje de mensajes e híbrida

Metodología

Comunicación

 Esp. Lic. Fabiana Leibovich: [email protected]



Bibliografia



 Foundations of Multithreaded, Parallel, and Distributed

Programming. G. Andrews. Addison Wesley
www.cs.arizona.edu/people/greg/mpdbook


 An Introduction to Parallel Computing. Grama, Gupta, Karypis, Kumar.

Objetivos

 Plantear

los

fundamentos de

la programación concurrente,
estudiando sintaxis y semántica, así como herramientas y lenguajes
p/ la resolución de programas concurrentes.


 Analizar el concepto de sistemas concurrentes que integran la
arquitectura de hardware, el SO y los algoritmos para la resolución
de problemas concurrentes.


 Estudiar

los conceptos

fundamentales de comunicación y
sincronización e/ procesos, por Memoria compartida (MC) y Pasaje
de mensajes (PM).


 Vincular

la concurrencia en software con
procesamiento distribuido y paralelo, para
multiprocesador con algoritmos concurrentes.

los conceptos de
lograr soluciones

¿Qué es la concurrencia?

RAE: “Coincidencia, concurso simultáneo de varias circunstancias”



Concurrencia es la capacidad de ejecutar múltiples actividades en
paralelo o simultáneamente



Permite a distintos objetos actuar al mismo tiempo

Concepto clave dentro de la Ciencia de la Computación, relevante
para el diseño de hardware, SO, multiprocesadores, computación
distribuida, programación y diseño.



La necesidad de sistemas de cómputo cada vez más poderosos y
flexibles atenta contra
la simplificación de asunciones de
secuencialidad



¿Dónde encontramos concurrencia?

“Concurrency is everywhere”


 Está presente en la naturaleza, la vida diaria, los

sistemas de cómputo, etc

 Cualquier sistema más o menos “inteligente” exhibe

concurrencia…
 Desde un teléfono hasta un automóvil
 Navegador Web accediendo información mientras atiende al usuario
 Acceso de varias aplicaciones a disco
 Varios usuarios conectados al mismo sistema (ej, haciendo una

reserva)
 Juegos
 Otros??

Concurrencia “natural”

Problema: Desplegar cada 3 segundos un mensaje
Qué ocurre si se quiere mostrar, además, otro cartel pero cada cada
5 segundos ??



El programa (secuencial) es más complejo…

Una solución más
natural es ejecutar dos
algoritmos simples
concurrentemente…


Por qué es necesaria la Programación

Concurrente?

 No hay más ciclos de reloj…
 Aplicaciones con estructura más natural.

 El mundo no es secuencial
 Más

apropiado

programar

múltiples

actividades

independientes y concurrentes

 Reacción a entradas asincrónicas (ej: sensores)

 Mejora en la respuesta

 No bloquear la aplicación completa por E/S

 Performance a partir de hardware multiprocesador / multicore

 Ejecución paralela

 Sistemas distribuidos

 Una aplicación en varias máquinas
 Sistemas C/S o P2P



Objetivos de los sistemas concurrentes

 Ajustar el modelo de arquitectura de hardware y software al

problema del mundo real a resolver.



 El mundo real ES CONCURRENTE



 Incrementar la performance, 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: la velocidad de ejecución que se puede alcanzar,
mejor utilización de la CPU de cada procesador, y explotación de la
concurrencia inherente a la mayoría de los problemas reales.



Conexiones

¿Qué es un proceso?

 Programa secuencial:

 un solo flujo de control que ejecuta una instrucción y cuando esta finaliza

ejecuta la siguiente


 PROCESO: programa secuencial

 Un único thread o flujo de control


 Múltiples threads o flujos de control



 programa concurrente
 procesos paralelos

programación secuencial, monoprocesador

Los procesos cooperan y compiten...


Posibles comportamientos de los procesos

 Procesos independientes

 Relativamente raros
 Poco interesantes



Posibles comportamientos de los procesos

 Competencia

 Típico en SO y redes, debido a recursos compartidos



Posibles comportamientos

de los procesos

 Cooperación

 Los procesos se combinan para resolver una tarea común
 Sincronización



Procesamiento secuencial, concurrente y

paralelo

 Analicemos la solución secuencial y monoprocesador
(UNA máquina) para fabricar 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á
luego de N pasos de
procesamiento o fabricación.

realizar

Procesamiento secuencial, concurrente y

paralelo

 Si disponemos de N máquinas para fabricar el objeto, y
no hay dependencias (x ej de la materia prima), cada
una puede trabajar al mismo tiempo en una parte

Consecuencias 

 Menor tiempo para completar el trabajo
 Menor esfuerzo individual
 Paralelismo del hardware

Dificultades 

 Distribución de la carga de trabajo
 Necesidad de compartir recursos evitando conflictos
 Necesidad de esperarse en puntos clave
 Necesidad de comunicarse
 Tratamiento de las fallas
 Asignación de una de las máquinas para el ensamblado (Cual??)

Procesamiento secuencial, concurrente y

paralelo

 Vimos las soluciones secuencial y paralela (multiplicando el hard)
en el problema de fabricar un objeto (sistema) de múltiples partes
 Otro enfoque: UNA máquina dedica parte del tiempo a cada
componente del objeto  Concurrencia sin paralelismo de
hard

Dificultades 

 Distribución de carga de trabajo
 Necesidad de compartir recursos evitando conflictos
 Necesidad de esperarse en puntos clave
 Necesidad de comunicarse
 Necesidad de recuperar el “estado” de cada proceso al retomarlo.

CONCURRENCIA  Concepto de software no restringido a una

arquitectura particular de hardware ni a un número

determinado de procesadores

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
(en paralelo), si el hardware lo permite

 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.

Características importantes:



- Interacción
- No determinismo  dificultad para la interpretación y debug
- Ejecución “infinita”

Soporte de ejecución de un programa

concurrente

 Los procesos concurrentes se ejecutan con la ayuda de un núcleo de

ejecución (run-time support system)

 Planificador (scheduler) del sistema operativo


 Se encarga de la creación, terminación y multiplexado de los procesos

 Opciones del núcleo:

 Desarrollado como parte de la aplicación (Modula-2)
 Incluido en el entorno de ejecución del lenguaje (Ada, Java)
 Parte de un sistema operativo de tiempo real (POSIX)
 Microprogramado en el procesador (occam2)


El método de planificación utilizado afecta al comportamiento temporal del sistema



Concurrencia vs. Paralelismo

 La concurrencia no es (sólo) paralelismo

Concurrencia “interleaved” 

 Procesamiento simultáneo lógicamente
 Ejecución

intercalada en un único

procesador

 “Seudo-paralelismo”



Concurrencia simultánea 

 Procesamiento simultáneo físicamente
 Requiere un sistema multiprocesador o

multicore

 Paralelismo “full”


Procesamiento secuencial, concurrente y

paralelo

 Cambios de estado de los procesos (recordar de S.O.)

Procesamiento secuencial, concurrente y

paralelo

Multiprogramación en un procesador
 El tiempo de CPU es compartido entre varios procesos x ej por time

slicing

 El SO controla y planifica procesos: si el slice expiró o el proceso se

bloquea el SO hace context (process) switch



Process switch: suspender el proceso actual y restaurar

otro



1. Salvar el estado actual en memoria. Agregar el
proceso al final de la cola de ready o una cola de wait

2. Sacar un proceso de la cabeza de la cola ready.
Restaurar su estado y ponerlo a correr

Reanudar un proceso bloqueado: mover un proceso
de la cola de wait a la de ready

Procesos e hilos

 Todos los sistemas operativos soportan procesos

 Cada proceso se ejecuta en una máquina virtual distinta


 Algunos sistemas operativos soportan procesos ligeros (hilos o

threads)

 Todos los hilos de un proceso comparten la misma máquina virtual
 Tienen acceso al mismo espacio de memoria
 El programador o el lenguaje deben proporcionar mecanismos

para evitar interferencias


 La concurrencia puede estar soportada por

 El lenguaje: Java, Ada, occam2
 El sistema
  • Links de descarga
http://lwp-l.com/pdf17919

Comentarios de: Tópicos de programación Concurrente y Paralela (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad