Múltiples automóviles tratando de ir desde el punto A al punto B. Una ruta, un carril =? secuencialidad, colisiones. Una ruta, múltiples carriles ? paralelismo, interacciones (?) Múltiples rutas? procesamiento distribuido, heterogeneidad. El ejemplo tiene la esencia de la concurrencia:
Los automóviles son tareas que deben ejecutarse. Los carriles y las rutas alternativas son los múltiples procesadores. Siempre los automóviles deberán sincronizarse (por ejemplo por las luces del tráfico) para no colisionar. La noción de paralelo y distribuido.
Title: Conceptos de Concurrencia
Un thread de control =? programación secuencial, monoprocesador. Múltiples threads de control? procesos? concurrencia.
Los procesos se comunican y sincronizan, en base a dos criterios: Exclusión mútua en el acceso a secciones críticas de código. Espera por condición. La historia de la concurrencia=? En los 60’s ==? Evolución de los sistemas operativos. Controladores de dispositivos independientes(canales). Multiprogramación. En los 70´s==? Formalización de la concurrencia en los lenguajes. En los 80’s==? Redes, procesamiento distribuido. En los 90’s ==? MPP , InterNet, CS, Web computing… Hoy==? Cluster computing, Grid computing, Procesamiento masivo de datos distribuidos, Real Time Distributed systems…
Title: Algunos conceptos del Hardware.
Procesadores y niveles de memoria. Memoria primaria. Memoria Caché. Niveles de memoria Caché. Multiprocesadores de memoria compartida. Esquemas UMA (Uniform memory access) con Bus o Swith. (arquitecturas SMP- Symmetric multiprocessors) Esquemas NUMA para mayor número de procesadores distribuidos. Multiprocesadores con memoria distribuida. Grado de acoplamiento de los procesadores. Memoria compartida distribuida.
Title: Concurrencia: Clases de Aplicaciones
El primer tipo de aplicaciones se corresponde cuando ejecutamos N procesos independientes sobre M procesadores, con N > M. Un sistema de software de “multithreading” maneja simultáneamente tareas independientes, asignando (por ejemplo por tiempos) los procesadores de que dispone. Ejemplos típicos: Sistemas de ventanas en PCs o WS. Time sharing en sistemas operativos multiprocesador. Sistemas de tiempo real en plantas industriales.
Title: Concurrencia: Clases de Aplicaciones
El segundo tipo de aplicaciones es el cómputo distribuido: una red de comunicaciones vincula procesadores diferentes sobre los que se ejecutan procesos que se comunican esencialmente por mensajes. Cada componente del sistema distribuido puede hacer a su vez multithreading. Ejemplos típicos: Servidores de archivos (recursos) en una red. Sistemas de Bases de datos distribuidas (bancos, reservas de vuelos). Servidores WEB distribuidos. Arquitecturas cliente–servidor. Sistemas tolerantes a fallas.
Title: Concurrencia: Clases de Aplicaciones
El procesamiento paralelo es el tercer tipo de aplicaciones. Se trata de resolver un dado problema en el menor tiempo posible, utilizando una arquitectura multiprocesador en la que se pueda distribuir la tarea global en tareas (independientes? interdependientes?) que puedan ejecutarse en diferentes procesadores. Paralelismo de datos y paralelismo de procesos. Ejemplos típicos: Cálculo científico. Modelos de sistemas (meteorología, movimiento planetario). Gráficos, procesamiento de imágenes, realidad virtual, procesamiento de video. Problemas combinatorios y de optimización lineal y no lineal. Modelos econométricos.
Title: Paradigmas de resolución de programas concurrentes
Si bien el número de aplicaciones es muy grande, en general los “patrones” de resolución concurrente son pocos: 1-Paralelismo iterativo, 2-paralelismo recursivo, 3-productores y consumidores, 4-clientes y servidores, 5-pares que interactúan. En el paralelismo iterativo un programa tiene un conjunto de procesos (posiblemente idénticos) cada uno de los cuáles tiene uno o más loops. Es decir cada proceso es un programa iterativo. La idea es que si estos procesos cooperan para resolver un único problema (ejemplo un sistema de ecuaciones) pueden trabajar independientemente y sincronizar por memoria compartida o envío de mensajes.
Title: Paradigmas de resolución de programas concurrentes
En el paralelismo recursivo el problema general (programa) puede descomponerse en procesos recursivos que trabajan sobre partes del conjunto total de datos. Ejemplos clásicos son por ejemplo el sorting by merging o el cálculo de raíces en funciones continuas. Los esquema productor-consumidor muestran procesos que se comunican. Es habitual que estos procesos se organicen en pipes a través de los cuáles fluye la información. Cada proceso en el pipe es un filtro que consume la salida de su proceso predecesor y produce una salida para el proceso siguiente.
Title: Paradigmas de resolución de programas concurrentes
Cliente-servidor es el esquema dominante en las aplicaciones de procesamiento distribuido. Los servidores son procesos que esperan pedidos de servicios de múltiples clientes. Naturalmente unos y otros pueden ejecutarse en procesadores diferentes. Los mecanismos de invocación son variados (rendezvous y RPC por ejemplo). El soporte distribuido puede ser muy simple (LAN) o extendido a toda la WEB. En los esquemas de pares que interactúan los procesos (que forman parte de un programa distribuido) resuelven partes del problema (normalmente mediante código idéntico) e intercambian mensajes para avanzar en la tarea. El esquema permite mayor grado de asincronismo que C-S.
Página siguiente |