Sistemas Concurrentes: Conceptos fundamentales

Slides:



Advertisements
Presentaciones similares
TEMA 1 Introducción a la Programación Concurrente
Advertisements

1.3. PROGRAMACION PARALELA
LENGUAJES PARALELOS Chang y Smith (1990) clasificación:
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
Introducción a LAS Bases de Datos
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Unidad 1 Conceptos básicos de computación
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
Módulo I: PRINCIPIOS Y CONCEPTOS BÁSICOS DE LA INFORMÁTICA (20%)
LENGUAJES DE PROGRAMACIÓN
INTRODUCCIÓN A JAVA.
ASPECTOS DEL DISEÑO DE SD
INTRODUCCIÓN ESTADO DE LA TÉCNICA PROCESAMIENTO DISTRIBUIDO CON MPI PROCESAMIETNO DISTRIBUIDO DE IMÁGENES GENÉRICO CON VTK PROCESAMIENTO DISTRIBUIDO DE.
INSTITUTO TECNOLOGICO DE MINATITLAN
Sistemas en estratos. Descripción: se organiza en una jerarquía de estratos, estando construido cada uno de ellos sobre el otro que tiene menor jerarquía.
Profesor: Ing. Matías Vallerga Ayudante: Lic. Cristian Kenny
Mejoras a las Máquinas Von Neumann
Introducción al Software
Universidad Centroamericana
Desarrollo de aplicaciones web en entorno servidor
Introducción a los SSOO Sebastián Sánchez Prieto.
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
PROGRAMACION CONCURRENTE
Unidad III Administración de procesos
Sistemas Concurrentes: Paso de mensajes
Sistemas Concurrentes: programación concurrente
Sistemas en tiempo real (STR)
SISTEMAS OPERATIVOS INTRODUCCIÓN Definición de Sistema Operativo
PROGRAMACION CONCURRENTE
Programación I MC José Andrés Vázquez Flores
Desarrollo de aplicaciones para ambientes distribuidos
Características de un sistema operativo
Introducción a los Sistemas Operativos
Un sistema de gestión de bases de datos: Es un conjunto de programas que permite a los usuarios crear y mantener una base de datos. Por tanto, el SGBD.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Sistemas Concurrentes I.T. Informática de Sistemas Curso
Una computadora MIMD intrínseca implica interacciones entre n procesadores debido a que todos los flujos de memoria se derivan del mismo espacio de datos.
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Teoría de Sistemas Operativos Introducción Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
ARQUITECTURAS PARALELAS
 Un LENGUAJE DE PROGRAMACION es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas al cabo por maquinas como las computadoras.
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
Arquitecturas de Sistemas Interactivos: Introducción
VIII. TOPICOS AVANZADOS DE SISTEMAS OPERATIVOS
Facultad de Ingeniería
María José Freire Mayra Coello Juan Francisco Pérez
1 5. UNIDADES DE PROGRAMAS. 2 Uso de mecanismos de control de secuencia de: Invocaciones Retornos Entre: PPSP 1 a) I R SP 1 SP 2 b) I R Unidades subordinadas.
UNIDAD 7 “OTROS PARADIGMAS DE PROGRAMACIÓN“ LI & MSC OSCAR RAMIREZ CORTÉS Universidad de la Huasteca Veracruzana.
ARQUICTECTURA DE SERVIDORES
ARQUITECTURA ALTERNATIVA DE SERVIDORES SISTEMAS OPERTIVOS DE RED En un sistema operativo de red los usuarios saben que están conectados a la red y que.
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
UNIDAD 1. ORGANIZACIÓN BÁSICA Y DISEÑO DEL COMPUTADOR
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II.
DOCENTE: DAISY KATERINE RODRÍGUEZ DURÁN. CONTENIDO TEMÁTICO SISTEMAS OPERATIVOS PAQUETES INTEGRADOS DE OFICINA PROCESOS Y PROCEDIMIIENTOS DE UNIDAD ADMINISTRATIVA.
Compilador Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa.
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Tendencia De Los Sistemas Operativos
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
SISTEMAS OPERTIVOS DE RED Los usuarios están conectados a la red y que pueden compartir recursos. Cada equipo ejecuta con sus propios recursos su propio.
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Harware Software Yuneidy moreno 7-2 Tecnología i. E. devora Arango.
HISTORIA DE LOS LENGUJAES DE PROGRAMACIÓN HARDWARE: Computadoras primivas en programación MÉTODOS: Subprogramas Estructuras de datos Posibilidad.
1 Unidad I.2.- Objetivos de los Sistemas Distribuidos Ing. Luis Armando García Eliseo © Agosto 2011.
Sistemas Distribuidos Conceptos Básicos Propiedades MSI. Nancy A. Olivares Ruiz.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Transcripción de la presentación:

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

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

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

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.

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

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.

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?

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

¿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;

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.

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

Mecanismos clásicos de comunicación Comunicación directa (memoria compartida) Canales Buzones Llamada a procedimiento remoto (RPC) etc.

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.

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

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?

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

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

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

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)

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)

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

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.