Sistemas Concurrentes: Conceptos fundamentales - PowerPoint PPT Presentation

About This Presentation
Title:

Sistemas Concurrentes: Conceptos fundamentales

Description:

Title: Objetivos Author: Jos Miguel Santos Espino Last modified by * Created Date: 2/23/2000 10:53:37 PM Document presentation format: Presentaci n en pantalla – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 32
Provided by: Jos748
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Concurrentes: Conceptos fundamentales


1
Sistemas ConcurrentesConceptos fundamentales
  • I.T. Informática de Sistemas
  • Curso 2002-2003

2
Contenidos
  • Concurrencia y paralelismo
  • Sistema concurrente
  • Programación concurrente
  • Lenguaje concurrente
  • Arquitectura paralela
  • Sistema distribuido

3
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 unaexistencia simultánea de varios procesos
    en ejecución.
  • Ojo, concurrencia existencia simultánea no
    implica ejecución simultánea.

4
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
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
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
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
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
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
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
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
Contenidos
  • Concurrencia y paralelismo
  • Sistema concurrente
  • Programación concurrente
  • Lenguaje concurrente
  • Arquitectura paralela
  • Sistema distribuido

13
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
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
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
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
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
Cómo expresar la concurrencia?
  • Sentencia concurrente
  • cobegin
  • P Q R
  • coend
  • Sentencia concurrente múltiple
  • forall i1 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 bc 2a
  • Objetos que representan procesos
  • task A is begin P end
  • task B is begin Q end
  • task C is begin R end

19
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
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
Mecanismos clásicos de comunicación
  • Comunicación directa (memoria compartida)
  • Canales
  • Buzones
  • Llamada a procedimiento remoto (RPC)
  • etc.

22
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
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
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
Contenidos
  • Concurrencia y paralelismo
  • Sistema concurrente
  • Programación concurrente
  • Lenguaje concurrente
  • Arquitectura paralela
  • Sistema distribuido

26
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
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
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
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
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
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.
Write a Comment
User Comments (0)
About PowerShow.com