Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Programación concurrente en lenguajes funcionales




Enviado por Pablo Turmero



Partes: 1, 2

    Monografias.com

    1
    ÍNDICE
    1. INTRODUCCIÓN
    1.1 Motivación y Orígenes
    1.2 Concurrencia y lenguajes funcionales
    2. CONCURRENT HASKELL
    2.1 Procesos
    2.2 Sincronización y comunicación
    2.3 Semáforos
    2.4 Otras operaciones concurrentes
    2.5 Productor/consumidor
    2.6 Canales
    3. CONCLUSIONES
    4. REFERENCIAS

    Monografias.com

    2
    1. INTRODUCCIÓN
    La necesidad de ofrecer concurrencia en el acceso a los recursos computacionales se remonta a los primeros sistemas operativos.
    Aprovechar al máximo los recursos computacionales fue una necesidad apremiante, sobre todo en la época en que las computadoras eran caras y escasas; el sistema operativo tenía que ofrecer la ejecución concurrente y segura de programas de varios usuarios, que desde distintas terminales utilizaban un solo procesador, y así surgió la necesidad de introducir algunos conceptos de programación concurrente para programar los sistemas operativos.

    Monografias.com

    3
    1.1 Motivación y Orígenes
    Existen sistemas inherentemente concurrentes: los sistemas reactivos.
    Aparte de esta motivación existen otras dos motivaciones principales, que de hecho fueron anteriores en el tiempo a la utilización de la programación concurrente para la construcción de sistemas reactivos:
    Explotación de arquitecturas paralelas para obtener ganancia en la velocidad de ejecución (Programación Paralela).
    Mejorar la utilización del procesador (Sistemas Operativos).

    Monografias.com

    4
    1.2 Concurrencia y lenguajes funcionales
    Debido a la propiedad de confluencia (podemos encontrar dos secuencias de evaluación diferentes que parten del mismo dato de entrada), los lenguajes funcionales pueden utilizar directamente el paralelismo implícito. Otra opción es añadir al lenguaje ciertas extensiones para especificar la concurrencia, como es el caso que vamos a estudiar.

    Monografias.com

    5
    2. CONCURRENT HASKELL
    Concurrent Haskell es una extensión del lenguaje funcional perezoso Haskell para ofrecer la posibilidad de realizar programas concurrentes. Concurrent Haskell representa un nuevo paso que apunta a construir un puente entre el mundo de los lenguajes funcionales puros y los lenguajes intensivos de entrada y salida.

    Monografias.com

    6
    Algo más que una extensión de haskell :
    Consigue integrar la concurrencia en un lenguaje perezoso. Por ejemplo los procesos pueden comunicarse como estructuras de datos sin evaluar unos a otros.
    Presenta una semántica para Haskell claramente diferenciada en una capa determinista y una capa concurrente. Las técnicas de razonamiento existentes son mantenidas sin modificaciones, por ejemplo, las transformaciones de programas que preservan la corrección en un programa Haskell secuencial también la preservarán en un lenguaje Haskell concurrente.
    Hay pocas operaciones primitivas nuevas, que son expresivas y fáciles de implementar.

    Monografias.com

    7
    nuevos ingredientes a haskell:
    Procesos, y un mecanismo para gestionarlos.
    Estados atómicos mutables, para soportar comunicación y cooperación entre los procesos.

    Monografias.com

    8
    2.1 Procesos
    Concurrent Haskell proporciona la nueva primitiva forkIO que inicia un proceso concurrente:
    forkIO :: IO () -> IO ()
    forkIO a , es una acción que toma a otra acción , a, como su argumento y crea un proceso concurrente que ejecuta dicha acción. La entrada y salida y otros efectos laterales realizados por a, son interpolados de una manera indefinida con aquellos que siguen el forkIO.

    Partes: 1, 2

    Pá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