CLASE1 .pdf
Nombre del archivo original: CLASE1.pdf
Título: PROGRAMACION CONCURRENTE Y PARALELA
Autor: CARMEN
Este documento en formato PDF 1.5 fue generado por Microsoft® PowerPoint® 2010, y fue enviado en caja-pdf.es el 04/07/2016 a las 05:13, desde la dirección IP 201.157.x.x.
La página de descarga de documentos ha sido vista 3033 veces.
Tamaño del archivo: 353 KB (29 páginas).
Privacidad: archivo público
Vista previa del documento
PROGRAMACION
CONCURRENTE Y PARALELA
EVOLUCION DE LA
PROGRAMACION CONCURRENTE
Años 60 - Sistemas operativos
Años 70 - Avances en programación concurrente.
Concepto de proceso y ejecución concurrente
Años 80 - Aparición de Ada. Pocos desarrollos
posteriores, en general relacionados con tiempo real.
Se enfatiza en otros paradigmas (objetos, declarativa,
etc.)
Años 90 - Aparición de la Web y la programación con
procesos ligeros. Reactivación de la programación
concurrente
PROGRAMA SECUENCIAL
PROGRAMA CONCURRENTE
PROBLEMA COTIDIANO
La abuela nos quiere hacer un regalo. Un
sweter confeccionado a mano.
Datos:
Lana
Agujas
Patrón
Medidas
Proceso:
Secuencial
Paralelo
Concurrente
Forma Secuencial
Brazo izqdo
Brazo dcho
Espalda
Frente
Unión
Forma Paralelo
Brazo izqdo
Brazo dcho
Espalda
Frente
Unión
La abuela pide ayuda a una vecina y se reparten la tarea
Para confeccionar un sweter.
PARALELO:
VENTAJAS
Reducción del tiempo necesario
Reducción del esfuerzo
INCONVENIENTES
Necesidad
Necesidad
Necesidad
Necesidad
Necesidad
de
de
de
de
de
compartir los trabajos
compartir los recursos
esperar en ocasiones
comunicar
prevenir fallos
CONCURRENTE
Brazo izdo.
Brazo dcho.
Frente
Espalda
Unión de todo
•Uso de un temporizador
•La abuela distribuye el tiempo dedicado a
cada tarea
CONCURRENTE:
INCONVENIENTES
Los mismos que la programación
paralela
Los mismos que la programación
secuencial
VENTAJAS
La implementación 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
Los programas secuenciales terminan
Sea Progs el conjunto de programas
Sea Est el conjunto de estados de memoria
La semántica de un programa puede
establecerse
Sem : Progs
( Est
Est )
La característica fundamental es que el
comportamiento es determinista
SEMANTICA CONCURRENTE
Los programas concurrentes no terminan
La semántica de un programa no es una
función de estados
La característica fundamental es que el
comportamiento es no determinista
El orden de ejecución de las sentencias no
puede ser prederminado
Existen interferencias de unas partes del
programa en otras
¡¡ No es válida la arquitectura Von Neumann
MOTIVACION CONCURRENCIA
1. VELOCIDAD DE EJECUCION
Existen aplicaciones donde la velocidad de
respuesta es crítica
Tenemos varios procesos y varios (número
menor) procesadores
No es aplicable la programación paralela. No
coincide número de procesos y procesadores
En este caso la programación concurrente puede
mejorar el tiempo de respuesta
2. USO DEL PROCESADOR
La programación concurrente puede optimizar el
uso del procesador
3. ALGORITMOS CONCURRENTES
Existen programas que son
concurrentes por naturaleza
Problemas de la Programación
Concurrente
Sincronización
Exclusión Mutua
Comunicación
Prioridades
Sincronización
Intercambio de información para
coordinar actividades
Ejemplos: caso del sweter, chat,etc.
Exclusión Mutua
Exclusión Mutua: Garantía de que un
único proceso accede a un recurso en
un determinado instante.
Ejemplo: Cruzar una avenida o
boulevard.
Comunicación
Comunicación: Intercambio de datos
en uno u otro sentido entre procesos
Prioridad
Prioridad: Un proceso o comunicación
que causa una interrupción en la
ejecución de otro proceso, se dice
que tiene mayor prioridad
Arquitectura
La arquitectura que suele soportar la
programación concurrente puede ser
Fuertemente acoplada
Débilmente acoplada
Arquitectura fuertemente acoplada
Arquitectura con memoria compartida
Los procesadores acceden todos a la misma
memoria
Es poco utilizada en sistemas
multiprocesador
Es común en sistemas monoprocesador
Está implementada en la programación con
hilos (java)
Arquitectura débilmente acoplada
Los procesadores están interconectados,
cada uno tiene su memoria
La comunicación se realiza mediante
mensajes
Arquitectura de sistemas distribuidos
Ejecución Concurrente
Un sistema concurrente se compone de un
conjunto de procesos secuenciales
autónomos 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 intercalándose unas con otras
(paralelismo lógico)
La forma de ejecutar las tareas concurrentes puede
variar, según se ejecuten:
En un sistema monoprocesador
(multiprogramación)
En un sistema multiprocesador (fuertemente
acoplado)
(multiproceso)
En un sistema distribuido (débilmente acoplado)
(procesamiento distribuido)
En general es posible que haya que multiplexar el
uso del procesador o procesadores entre los
procesos (paralelismo lógico)
Procesos
Los sistemas operativos suelen soportar procesos
“pesados” en un sistema monoprocesador
(multiprogramación)
Cada proceso se ejecuta sobre una máquina virtual
distinta
Algunos sistemas operativos tienen procesos
“ligeros”(threads)
Todos los hilos de un mismo 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 entre unos y
otros
La concurrencia puede estar soportada por el lenguaje
o sólo por el sistema operativo
Concurrencia en el Lenguaje
VENTAJAS
Programas más
legibles y fáciles de
mantener
Programas más
portátiles
Se pueden detectar
errores al compilar
No hace falta
sistema operativo
INCONVENIENTES
Distintos modelos de
concurrencia según
lenguajes
Puede ser difícil de
realizar
eficientemente
Se puede mejorar la
portabilidad con SO
normalizados
Lenguajes concurrentes
Tienen elementos de lenguaje para
Crear procesos concurrentes
Sincronizar su ejecución
Comunicarse entre sí
Los procesos pueden ser
independientes,
cooperar para un fin común,
competir por el uso de recursos
Los procesos que cooperan o compiten
necesitan comunicarse y sincronizar sus
actividades
Descargar el documento (PDF)
CLASE1.pdf (PDF, 353 KB)
Documentos relacionados
Palabras claves relacionadas
arquitectura
programas
programacion
ejecucion
sistemas
procesos
puede
sistema
programa
concurrentes
concurrente
procesador
proceso
secuencial
brazo