SlideShare una empresa de Scribd logo
Sistemas Concurrentes:
Conceptos fundamentales
I.T. Informática de Sistemas
Curso 2002-2003
SistemasConcurrentes
Contenidos
• Concurrencia y paralelismo
• Sistema concurrente
• Programación concurrente
• Lenguaje concurrente
• Arquitectura paralela
• Sistema distribuido
SistemasConcurrentes
¿Qué es la concurrencia?
• Definición de diccionario: coincidir en el espacio
o en el tiempo dos o más personas o cosas.
• En Informática, se habla de concurrencia
cuando hay una
existencia simultánea de varios procesos en
ejecución.
• Ojo, concurrencia existencia simultánea no
implica ejecución simultánea.
SistemasConcurrentes
Paralelismo vs concurrencia
• El paralelismo es un caso particular de la
concurrencia.
• Se habla de paralelismo cuando ocurre la
ejecución simultánea de instrucciones:
 arquitecturas paralelas
 procesamiento paralelo
 algoritmos paralelos
 programación paralela
SistemasConcurrentes
Procesos y concurrencia
• Una forma de ver la concurrencia es como un
conjunto de actividades que se desarrollan de
forma simultánea.
• En informática, cada una de esas actividades se
suele llamar proceso.
SistemasConcurrentes
¿Dónde se encuentra la
concurrencia?
• En la Naturaleza (el problema que se modela)
 ¿ejemplos?
• En el hardware (la herramienta para solucionar
el problema):
 ejecución paralela de instrucciones
 funcionamiento paralelo de los periféricos
 procesadores múltiples
 sistemas distribuidos
SistemasConcurrentes
¿Qué es un sistema concurrente?
• Es un sistema informático en el que la
concurrencia desempeña un papel importante.
• Ejemplos:
 sistemas operativos
 sistemas de gestión de bases de datos (DBMS)
 sistemas de tiempo real
 sistemas distribuidos
SistemasConcurrentes
Concurrencia inherente o potencial
• Sistemas inherentemente concurrentes:
 el entorno con el que interactúan, o el entorno que
modelan tiene forzosamente actividades simultáneas
 p.ej. red de cajeros automáticos
• Sistemas potencialmente concurrentes:
 no es estrictamente necesario que haya concurrencia,
pero se puede sacar partido de ella
 p.ej. para aumentar la velocidad de ejecución
SistemasConcurrentes
Ejercicio
• Dar un ejemplo de sistema en la naturaleza que
sea concurrente
• Dar dos ejemplos de sistemas inherentemente
concurrentes
• Dar dos casos de sistemas potencialmente
concurrentes en los que nos beneficiaríamos de
la utilización de la concurrencia
SistemasConcurrentes
Conclusiones
• La concurrencia está presente en la Naturaleza y
en los sistemas informáticos.
• El hardware multiprocesador permite realizar
más trabajo en menos tiempo.
• De ahí se derivan dos grandes objetivos:
 aprovechar la concurrencia existente en el hardware
 facilitar al programador su misión de modelar
sistemas concurrentes
SistemasConcurrentes
Técnicas para producir actividades
concurrentes en el computador
• De forma manual
 Trabajar directamente sobre el hardware
 Usar llamadas al sistema o bibliotecas de software
(ejs. PVM, pthreads)
 Expresarla en un lenguaje de alto nivel
• De forma automática
 El sistema operativo se encarga automáticamente (ej.
multiprogramación)
 El compilador detecta la concurrencia implícita en
nuestros programas secuenciales
SistemasConcurrentes
Contenidos
• Concurrencia y paralelismo
• Sistema concurrente
• Programación concurrente
• Lenguaje concurrente
• Arquitectura paralela
• Sistema distribuido
SistemasConcurrentes
Programación concurrente:
definición
• Conjunto de técnicas y notaciones para expresar
el paralelismo potencial de una aplicación,
tratando los problemas de sincronización y
comunicación entre procesos.
• La programación concurrente, en sentido
amplio, no trata de la implementación del
paralelismo en el hardware.
SistemasConcurrentes
Motivación de la programación
concurrente
• Aprovechar el hardware multiprocesador
• Aumentar la productividad de la CPU
• Facilitar la escritura de aplicaciones donde la
concurrencia sea un elemento importante
SistemasConcurrentes
Lenguajes de alto nivel
• Los LAN permiten programar en un nivel más
cercano al ámbito del problema (problem
domain) por medio de la abstracción.
• Además, los lenguajes y el S.O. proporcionan
herramientas para usar con más comodidad los
recursos del hardware.
SistemasConcurrentes
Lenguajes de alto nivel
• A lo largo de la historia, se han inventado abstracciones
en los LAN que han resultado muy útiles para la
comunidad informática:
 abstracción de expresiones (FORTRAN...)
 abstracción del flujo de control: programación
estructurada secuencial (Algol...)
 abstracción de la lógica y el álgebra (Lisp, Prolog...)
 abstracción de datos (Algol, Pascal...)
 modelado de objetos (Smalltalk, C++...)
 ¿abstracción de la concurrencia?
SistemasConcurrentes
Lenguajes concurrentes
• Aquellos que incorporan características que
permiten expresar la concurrencia directamente,
sin recurrir a servicios del s.o., bibliotecas, etc.
• Normalmente incluyen mecanismos de
sincronización y comunicación entre procesos
• Ejemplos: Ada, Java, SR, Occam, PARLOG...
SistemasConcurrentes
¿Cómo expresar la concurrencia?
• Sentencia concurrente:
cobegin
P; Q; R
coend;
• Sentencia concurrente
múltiple:
forall i:=1 to 1000 do
P(i);
• Tuberías (unix):
grep palabra | sort | lpr
• Instrucciones vectoriales:
type vector is
array(1..10) of int;
var a,b,c : vector;
a := b*c + 2*a;
• Objetos que representan
procesos:
task A is begin P; end;
task B is begin Q; end;
task C is begin R; end;
SistemasConcurrentes
Sincronización y comunicación
• Los procesos concurrentes tendrán necesidad de
comunicarse información.
• Además, será necesario en ocasiones detener a
un proceso hasta que se produzca un
determinado evento o se den ciertas
condiciones  sincronización
• Los lenguajes concurrentes deben proporcionar
mecanismos de sincronización y comunicación.
SistemasConcurrentes
Mecanismos clásicos de
sincronización
• Mecanismos de señalización
 Semáforos
 Cerrojos y variables condición
 Señales, eventos
 Retardos temporales
• Recursos compartidos
 Regiones críticas
 Monitores
 Objetos protegidos
SistemasConcurrentes
Mecanismos clásicos de
comunicación
• Comunicación directa (memoria compartida)
• Canales
• Buzones
• Llamada a procedimiento remoto (RPC)
• etc.
SistemasConcurrentes
Programación paralela
• Cuando estamos especialmente interesados en
escribir código para ser utilizado en un sistema
multiprocesador, hablamos de programación
paralela o algoritmos paralelos.
• Es un caso particular de la programación
concurrente en el que prima la ejecución
paralela.
SistemasConcurrentes
Ejercicio
• Usando la sentencia concurrente, diseñar
algoritmos concurrentes para:
 multiplicar dos matrices
 sumar una lista de N números (2 métodos)
 ordenar un vector
 obtener los números primos entre 2 y N
• tratando de obtener la máxima concurrencia
SistemasConcurrentes
La gran pregunta: ¿es necesaria la
programación concurrente?
• ¿No basta con la programación secuencial de
toda la vida?
• ¿Puede la prog. sec. modelar bien un sistema
concurrente?
• ¿Puede la prog. sec. aprovechar la concurrencia
existente en el hardware?
SistemasConcurrentes
Contenidos
• Concurrencia y paralelismo
• Sistema concurrente
• Programación concurrente
• Lenguaje concurrente
• Arquitectura paralela
• Sistema distribuido
SistemasConcurrentes
Arquitecturas paralelas
• Son sistemas informáticos con más de un
procesador. Dos tipos:
• Estrechamente acoplados
 los procesadores comparten memoria y reloj
 normalmente llamados multiprocesadores
• Débilmente acoplados
 no comparten memoria ni reloj
 sistemas distribuidos
SistemasConcurrentes
Multiprocesadores
• Sistemas con más de un procesador. Pueden ejecutar
varias instrucciones simultáneamente (en paralelo).
• Sistemas estrechamente acoplados: los
procesadores comparten la memoria (aunque puede ser
más o menos difícil acceder a la memoria de otro
procesador).
• Ventaja:
 aumento de velocidad de procesamiento con bajo coste
• Inconveniente:
 Escalable sólo hasta decenas o centenares de procesadores
SistemasConcurrentes
Sistemas distribuidos
• Múltiples procesadores conectados mediante
una red.
• Sistemas débilmente acoplados: los
procesadores no comparten memoria ni reloj.
• Los sistemas conectados pueden ser de
cualquier tipo.
• Escalable hasta millones de procesadores (ej.
Internet)
SistemasConcurrentes
Sistemas distribuidos: ventajas
• compartición de recursos dispersos
• ayuda al trabajo cooperativo de equipos
humanos
• aumento de velocidad de ejecución
• escalabilidad ilimitada
• aumento de fiabilidad:
 tolerancia a fallos (fault tolerance)
 alta disponibilidad (availability)
SistemasConcurrentes
Sistemas distribuidos:
complicaciones
• los sistemas no comparten memoria ni reloj:
 la comunicación es más compleja
 no se puede tener un estado global instantáneo.
 dificultades en la sincronización
• red de comunicaciones no fiable:
 pérdida de mensajes
 mensajes desordenados
• heterogeneidad de los nodos
 múltiples plataformas hw y sw
 diferencias en rendimiento
SistemasConcurrentes
Sistemas de tiempo real
• Para poder ejecutar satisfactoriamente tareas que han
de completarse en un plazo prefijado (ej. sistemas de
control industrial, sistemas multimedia)
• Dos tipos:
 s.t.r. crítico: para tareas que siempre deben cumplir los plazos
de terminación. Adecuados para la industria. Muy simples,
incompatibles con tiempo compartido, memoria virtual, etc.
 s.t.r. no crítico: intentan cumplir los plazos, pero no los
garantizan al 100%. Adecuados para multimedia, etc.

Más contenido relacionado

La actualidad más candente

Estandar tia 942
Estandar tia 942Estandar tia 942
Estandar tia 942
HUGO HUAMAN CONCHA
 
Tiempo, causalidad y estado global
Tiempo, causalidad y estado globalTiempo, causalidad y estado global
Tiempo, causalidad y estado global
Rene Guaman-Quinche
 
5.1 Redes y Subredes ip
5.1 Redes y Subredes ip5.1 Redes y Subredes ip
5.1 Redes y Subredes ip
David Narváez
 
Estados y transiciones de los procesos
Estados y transiciones de los procesosEstados y transiciones de los procesos
Estados y transiciones de los procesos
Alberto Ch
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.
Juan Anaya
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuida
Franklin Parrales Bravo
 
Algoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosAlgoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativos
Fernando Morales
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
Rennytox Hernandez
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
Pedro Vera
 
Tipos de comunicaciones
Tipos de comunicacionesTipos de comunicaciones
Tipos de comunicaciones
Nixon Maza
 
Filósofos
FilósofosFilósofos
Filósofos
CarminaCO
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
Infomania pro
 
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORAINTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
rehoscript
 
Revisando la jerarquía de chomsky
Revisando la jerarquía de chomskyRevisando la jerarquía de chomsky
Revisando la jerarquía de chomsky
Ivan Vladimir Meza-Ruiz
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
Sergio Lara Guevara
 
Ejercicios de-subneteo-14
Ejercicios de-subneteo-14Ejercicios de-subneteo-14
Ejercicios de-subneteo-14
Liseth Chávez
 
Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas
Claudio Eduardo Manzanero Yermo
 
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Francesc Perez
 
Algoritmos por prioridades
Algoritmos por prioridadesAlgoritmos por prioridades
Algoritmos por prioridades
Giovani Hernandez
 

La actualidad más candente (20)

Estandar tia 942
Estandar tia 942Estandar tia 942
Estandar tia 942
 
Tiempo, causalidad y estado global
Tiempo, causalidad y estado globalTiempo, causalidad y estado global
Tiempo, causalidad y estado global
 
5.1 Redes y Subredes ip
5.1 Redes y Subredes ip5.1 Redes y Subredes ip
5.1 Redes y Subredes ip
 
Estados y transiciones de los procesos
Estados y transiciones de los procesosEstados y transiciones de los procesos
Estados y transiciones de los procesos
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuida
 
Algoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosAlgoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativos
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
 
Tipos de comunicaciones
Tipos de comunicacionesTipos de comunicaciones
Tipos de comunicaciones
 
Filósofos
FilósofosFilósofos
Filósofos
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORAINTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
 
Revisando la jerarquía de chomsky
Revisando la jerarquía de chomskyRevisando la jerarquía de chomsky
Revisando la jerarquía de chomsky
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
Ejercicios de-subneteo-14
Ejercicios de-subneteo-14Ejercicios de-subneteo-14
Ejercicios de-subneteo-14
 
Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas
 
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4
 
Algoritmos por prioridades
Algoritmos por prioridadesAlgoritmos por prioridades
Algoritmos por prioridades
 

Similar a Paralelismo Concurrencia.ppt

INTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOSINTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOS
Richard Eliseo Mendoza Gafaro
 
7 introsd
7 introsd7 introsd
Herramientas de Sistemas Distribuidos
Herramientas de Sistemas DistribuidosHerramientas de Sistemas Distribuidos
Herramientas de Sistemas Distribuidos
Tensor
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Micael Gallego
 
Sistema Operativo UNIX
Sistema Operativo UNIXSistema Operativo UNIX
Sistema Operativo UNIX
Nekszer Lopez Espinoza
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
JuanVaggom
 
programacion_redes_informaticas_clase_9_31052024.ppt
programacion_redes_informaticas_clase_9_31052024.pptprogramacion_redes_informaticas_clase_9_31052024.ppt
programacion_redes_informaticas_clase_9_31052024.ppt
mviapiano
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
Gabriel Piña
 
Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneos
itatitat
 
computación paralela
computación paralelacomputación paralela
computación paralela
Yazmin Polanco
 
Sistemas operativos software
Sistemas operativos softwareSistemas operativos software
Sistemas operativos software
Johan Guerra
 
sistemas distribudos Semana 1
sistemas distribudos Semana 1sistemas distribudos Semana 1
sistemas distribudos Semana 1
Quispe Quichca Edgar Juan
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
Marlon Augusto Sarmiento Pinto
 
introduccion sistemas operativos2.pptx
introduccion sistemas operativos2.pptxintroduccion sistemas operativos2.pptx
introduccion sistemas operativos2.pptx
Rodmy Bustios
 
Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)
Kelwin Gamez
 
Emily (3)
Emily (3)Emily (3)
Emily (3)
krmn35
 
Rosa espinozamarinssoo introduccionehistoria
Rosa espinozamarinssoo introduccionehistoriaRosa espinozamarinssoo introduccionehistoria
Rosa espinozamarinssoo introduccionehistoria
rosaespinozamarin
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
Ricardo Joel Robinson Gonzalez
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
emilioSanchez89
 
3 unidad so2
3 unidad so23 unidad so2

Similar a Paralelismo Concurrencia.ppt (20)

INTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOSINTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOS
 
7 introsd
7 introsd7 introsd
7 introsd
 
Herramientas de Sistemas Distribuidos
Herramientas de Sistemas DistribuidosHerramientas de Sistemas Distribuidos
Herramientas de Sistemas Distribuidos
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 
Sistema Operativo UNIX
Sistema Operativo UNIXSistema Operativo UNIX
Sistema Operativo UNIX
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
 
programacion_redes_informaticas_clase_9_31052024.ppt
programacion_redes_informaticas_clase_9_31052024.pptprogramacion_redes_informaticas_clase_9_31052024.ppt
programacion_redes_informaticas_clase_9_31052024.ppt
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneos
 
computación paralela
computación paralelacomputación paralela
computación paralela
 
Sistemas operativos software
Sistemas operativos softwareSistemas operativos software
Sistemas operativos software
 
sistemas distribudos Semana 1
sistemas distribudos Semana 1sistemas distribudos Semana 1
sistemas distribudos Semana 1
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
introduccion sistemas operativos2.pptx
introduccion sistemas operativos2.pptxintroduccion sistemas operativos2.pptx
introduccion sistemas operativos2.pptx
 
Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)
 
Emily (3)
Emily (3)Emily (3)
Emily (3)
 
Rosa espinozamarinssoo introduccionehistoria
Rosa espinozamarinssoo introduccionehistoriaRosa espinozamarinssoo introduccionehistoria
Rosa espinozamarinssoo introduccionehistoria
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
3 unidad so2
3 unidad so23 unidad so2
3 unidad so2
 

Paralelismo Concurrencia.ppt

  • 1. Sistemas Concurrentes: Conceptos fundamentales I.T. Informática de Sistemas Curso 2002-2003
  • 2. SistemasConcurrentes Contenidos • Concurrencia y paralelismo • Sistema concurrente • Programación concurrente • Lenguaje concurrente • Arquitectura paralela • Sistema distribuido
  • 3. SistemasConcurrentes ¿Qué es la concurrencia? • Definición de diccionario: coincidir en el espacio o en el tiempo dos o más personas o cosas. • En Informática, se habla de concurrencia cuando hay una existencia simultánea de varios procesos en ejecución. • Ojo, concurrencia existencia simultánea no implica ejecución simultánea.
  • 4. SistemasConcurrentes Paralelismo vs concurrencia • El paralelismo es un caso particular de la concurrencia. • Se habla de paralelismo cuando ocurre la ejecución simultánea de instrucciones:  arquitecturas paralelas  procesamiento paralelo  algoritmos paralelos  programación paralela
  • 5. SistemasConcurrentes Procesos y concurrencia • Una forma de ver la concurrencia es como un conjunto de actividades que se desarrollan de forma simultánea. • En informática, cada una de esas actividades se suele llamar proceso.
  • 6. SistemasConcurrentes ¿Dónde se encuentra la concurrencia? • En la Naturaleza (el problema que se modela)  ¿ejemplos? • En el hardware (la herramienta para solucionar el problema):  ejecución paralela de instrucciones  funcionamiento paralelo de los periféricos  procesadores múltiples  sistemas distribuidos
  • 7. SistemasConcurrentes ¿Qué es un sistema concurrente? • Es un sistema informático en el que la concurrencia desempeña un papel importante. • Ejemplos:  sistemas operativos  sistemas de gestión de bases de datos (DBMS)  sistemas de tiempo real  sistemas distribuidos
  • 8. SistemasConcurrentes Concurrencia inherente o potencial • Sistemas inherentemente concurrentes:  el entorno con el que interactúan, o el entorno que modelan tiene forzosamente actividades simultáneas  p.ej. red de cajeros automáticos • Sistemas potencialmente concurrentes:  no es estrictamente necesario que haya concurrencia, pero se puede sacar partido de ella  p.ej. para aumentar la velocidad de ejecución
  • 9. SistemasConcurrentes Ejercicio • Dar un ejemplo de sistema en la naturaleza que sea concurrente • Dar dos ejemplos de sistemas inherentemente concurrentes • Dar dos casos de sistemas potencialmente concurrentes en los que nos beneficiaríamos de la utilización de la concurrencia
  • 10. SistemasConcurrentes Conclusiones • La concurrencia está presente en la Naturaleza y en los sistemas informáticos. • El hardware multiprocesador permite realizar más trabajo en menos tiempo. • De ahí se derivan dos grandes objetivos:  aprovechar la concurrencia existente en el hardware  facilitar al programador su misión de modelar sistemas concurrentes
  • 11. SistemasConcurrentes Técnicas para producir actividades concurrentes en el computador • De forma manual  Trabajar directamente sobre el hardware  Usar llamadas al sistema o bibliotecas de software (ejs. PVM, pthreads)  Expresarla en un lenguaje de alto nivel • De forma automática  El sistema operativo se encarga automáticamente (ej. multiprogramación)  El compilador detecta la concurrencia implícita en nuestros programas secuenciales
  • 12. SistemasConcurrentes Contenidos • Concurrencia y paralelismo • Sistema concurrente • Programación concurrente • Lenguaje concurrente • Arquitectura paralela • Sistema distribuido
  • 13. SistemasConcurrentes Programación concurrente: definición • Conjunto de técnicas y notaciones para expresar el paralelismo potencial de una aplicación, tratando los problemas de sincronización y comunicación entre procesos. • La programación concurrente, en sentido amplio, no trata de la implementación del paralelismo en el hardware.
  • 14. SistemasConcurrentes Motivación de la programación concurrente • Aprovechar el hardware multiprocesador • Aumentar la productividad de la CPU • Facilitar la escritura de aplicaciones donde la concurrencia sea un elemento importante
  • 15. SistemasConcurrentes Lenguajes de alto nivel • Los LAN permiten programar en un nivel más cercano al ámbito del problema (problem domain) por medio de la abstracción. • Además, los lenguajes y el S.O. proporcionan herramientas para usar con más comodidad los recursos del hardware.
  • 16. SistemasConcurrentes Lenguajes de alto nivel • A lo largo de la historia, se han inventado abstracciones en los LAN que han resultado muy útiles para la comunidad informática:  abstracción de expresiones (FORTRAN...)  abstracción del flujo de control: programación estructurada secuencial (Algol...)  abstracción de la lógica y el álgebra (Lisp, Prolog...)  abstracción de datos (Algol, Pascal...)  modelado de objetos (Smalltalk, C++...)  ¿abstracción de la concurrencia?
  • 17. SistemasConcurrentes Lenguajes concurrentes • Aquellos que incorporan características que permiten expresar la concurrencia directamente, sin recurrir a servicios del s.o., bibliotecas, etc. • Normalmente incluyen mecanismos de sincronización y comunicación entre procesos • Ejemplos: Ada, Java, SR, Occam, PARLOG...
  • 18. SistemasConcurrentes ¿Cómo expresar la concurrencia? • Sentencia concurrente: cobegin P; Q; R coend; • Sentencia concurrente múltiple: forall i:=1 to 1000 do P(i); • Tuberías (unix): grep palabra | sort | lpr • Instrucciones vectoriales: type vector is array(1..10) of int; var a,b,c : vector; a := b*c + 2*a; • Objetos que representan procesos: task A is begin P; end; task B is begin Q; end; task C is begin R; end;
  • 19. SistemasConcurrentes Sincronización y comunicación • Los procesos concurrentes tendrán necesidad de comunicarse información. • Además, será necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones  sincronización • Los lenguajes concurrentes deben proporcionar mecanismos de sincronización y comunicación.
  • 20. SistemasConcurrentes Mecanismos clásicos de sincronización • Mecanismos de señalización  Semáforos  Cerrojos y variables condición  Señales, eventos  Retardos temporales • Recursos compartidos  Regiones críticas  Monitores  Objetos protegidos
  • 21. SistemasConcurrentes Mecanismos clásicos de comunicación • Comunicación directa (memoria compartida) • Canales • Buzones • Llamada a procedimiento remoto (RPC) • etc.
  • 22. SistemasConcurrentes Programación paralela • Cuando estamos especialmente interesados en escribir código para ser utilizado en un sistema multiprocesador, hablamos de programación paralela o algoritmos paralelos. • Es un caso particular de la programación concurrente en el que prima la ejecución paralela.
  • 23. SistemasConcurrentes Ejercicio • Usando la sentencia concurrente, diseñar algoritmos concurrentes para:  multiplicar dos matrices  sumar una lista de N números (2 métodos)  ordenar un vector  obtener los números primos entre 2 y N • tratando de obtener la máxima concurrencia
  • 24. SistemasConcurrentes La gran pregunta: ¿es necesaria la programación concurrente? • ¿No basta con la programación secuencial de toda la vida? • ¿Puede la prog. sec. modelar bien un sistema concurrente? • ¿Puede la prog. sec. aprovechar la concurrencia existente en el hardware?
  • 25. SistemasConcurrentes Contenidos • Concurrencia y paralelismo • Sistema concurrente • Programación concurrente • Lenguaje concurrente • Arquitectura paralela • Sistema distribuido
  • 26. SistemasConcurrentes Arquitecturas paralelas • Son sistemas informáticos con más de un procesador. Dos tipos: • Estrechamente acoplados  los procesadores comparten memoria y reloj  normalmente llamados multiprocesadores • Débilmente acoplados  no comparten memoria ni reloj  sistemas distribuidos
  • 27. SistemasConcurrentes Multiprocesadores • Sistemas con más de un procesador. Pueden ejecutar varias instrucciones simultáneamente (en paralelo). • Sistemas estrechamente acoplados: los procesadores comparten la memoria (aunque puede ser más o menos difícil acceder a la memoria de otro procesador). • Ventaja:  aumento de velocidad de procesamiento con bajo coste • Inconveniente:  Escalable sólo hasta decenas o centenares de procesadores
  • 28. SistemasConcurrentes Sistemas distribuidos • Múltiples procesadores conectados mediante una red. • Sistemas débilmente acoplados: los procesadores no comparten memoria ni reloj. • Los sistemas conectados pueden ser de cualquier tipo. • Escalable hasta millones de procesadores (ej. Internet)
  • 29. SistemasConcurrentes Sistemas distribuidos: ventajas • compartición de recursos dispersos • ayuda al trabajo cooperativo de equipos humanos • aumento de velocidad de ejecución • escalabilidad ilimitada • aumento de fiabilidad:  tolerancia a fallos (fault tolerance)  alta disponibilidad (availability)
  • 30. SistemasConcurrentes Sistemas distribuidos: complicaciones • los sistemas no comparten memoria ni reloj:  la comunicación es más compleja  no se puede tener un estado global instantáneo.  dificultades en la sincronización • red de comunicaciones no fiable:  pérdida de mensajes  mensajes desordenados • heterogeneidad de los nodos  múltiples plataformas hw y sw  diferencias en rendimiento
  • 31. SistemasConcurrentes Sistemas de tiempo real • Para poder ejecutar satisfactoriamente tareas que han de completarse en un plazo prefijado (ej. sistemas de control industrial, sistemas multimedia) • Dos tipos:  s.t.r. crítico: para tareas que siempre deben cumplir los plazos de terminación. Adecuados para la industria. Muy simples, incompatibles con tiempo compartido, memoria virtual, etc.  s.t.r. no crítico: intentan cumplir los plazos, pero no los garantizan al 100%. Adecuados para multimedia, etc.