Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Sistemas concurrentes: conceptos fundamentales (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

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

Monografias.com

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

Monografias.com

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

Monografias.com

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.

Monografias.com

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

Monografias.com

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.

Monografias.com

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?

Monografias.com

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…

Monografias.com

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

Monografias.com

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.

Monografias.com

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

Monografias.com

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

Monografias.com

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.

Monografias.com

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

Monografias.com

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?

Monografias.com

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

Monografias.com

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

Monografias.com

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

Monografias.com

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)

Monografias.com

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)

Monografias.com

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

Monografias.com

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.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter