Sistemas concurrentes conceptos fundamentales
Download
1 / 31

Sistemas Concurrentes: Conceptos fundamentales - PowerPoint PPT Presentation


  • 213 Views
  • Updated On :

Sistemas Concurrentes: Conceptos fundamentales. I.T. Informática de Sistemas Curso 2002-2003. Contenidos. Concurrencia y paralelismo Sistema concurrente Programación concurrente Lenguaje concurrente Arquitectura paralela Sistema distribuido. ¿Qué es la concurrencia?.

Related searches for Sistemas Concurrentes: Conceptos fundamentales

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Sistemas Concurrentes: Conceptos fundamentales' - qiana


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Sistemas concurrentes conceptos fundamentales l.jpg

Sistemas Concurrentes:Conceptos fundamentales

I.T. Informática de Sistemas

Curso 2002-2003


Contenidos l.jpg
Contenidos

  • Concurrencia y paralelismo

  • Sistema concurrente

  • Programación concurrente

  • Lenguaje concurrente

  • Arquitectura paralela

  • Sistema distribuido


Qu es la concurrencia l.jpg
¿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.


Paralelismo vs concurrencia l.jpg
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


Procesos y concurrencia l.jpg
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.


D nde se encuentra la concurrencia l.jpg
¿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


Qu es un sistema concurrente l.jpg
¿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


Concurrencia inherente o potencial l.jpg
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


Ejercicio l.jpg
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


Conclusiones l.jpg
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


T cnicas para producir actividades concurrentes en el computador l.jpg
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


Contenidos12 l.jpg
Contenidos computador

  • Concurrencia y paralelismo

  • Sistema concurrente

  • Programación concurrente

  • Lenguaje concurrente

  • Arquitectura paralela

  • Sistema distribuido


Programaci n concurrente definici n l.jpg
Programación concurrente: definición computador

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


Motivaci n de la programaci n concurrente l.jpg
Motivación de la programación concurrente computador

  • Aprovechar el hardware multiprocesador

  • Aumentar la productividad de la CPU

  • Facilitar la escritura de aplicaciones donde la concurrencia sea un elemento importante


Lenguajes de alto nivel l.jpg
Lenguajes de alto nivel computador

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


Lenguajes de alto nivel16 l.jpg
Lenguajes de alto nivel computador

  • 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?


Lenguajes concurrentes l.jpg
Lenguajes concurrentes computador

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


C mo expresar la concurrencia l.jpg

Sentencia concurrente: computador

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;

¿Cómo expresar la concurrencia?


Sincronizaci n y comunicaci n l.jpg
Sincronización y comunicación computador

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


Mecanismos cl sicos de sincronizaci n l.jpg
Mecanismos clásicos de sincronización computador

  • 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


Mecanismos cl sicos de comunicaci n l.jpg
Mecanismos clásicos de comunicación computador

  • Comunicación directa (memoria compartida)

  • Canales

  • Buzones

  • Llamada a procedimiento remoto (RPC)

  • etc.


Programaci n paralela l.jpg
Programación paralela computador

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


Ejercicio23 l.jpg
Ejercicio computador

  • 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


La gran pregunta es necesaria la programaci n concurrente l.jpg
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?


Contenidos25 l.jpg
Contenidos concurrente?

  • Concurrencia y paralelismo

  • Sistema concurrente

  • Programación concurrente

  • Lenguaje concurrente

  • Arquitectura paralela

  • Sistema distribuido


Arquitecturas paralelas l.jpg
Arquitecturas paralelas concurrente?

  • 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


Multiprocesadores l.jpg
Multiprocesadores concurrente?

  • 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


Sistemas distribuidos l.jpg
Sistemas distribuidos concurrente?

  • 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)


Sistemas distribuidos ventajas l.jpg
Sistemas distribuidos: ventajas concurrente?

  • 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)


Sistemas distribuidos complicaciones l.jpg
Sistemas distribuidos: complicaciones concurrente?

  • 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


Sistemas de tiempo real l.jpg
Sistemas de tiempo real concurrente?

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


ad