stringtranslate.com

Coprogramación

La programación conjunta es el principio para que los sistemas concurrentes de programación de procesos relacionados se ejecuten en diferentes procesadores al mismo tiempo (en paralelo ). Hay varias implementaciones específicas para lograr esto.

Si una aplicación consta de un conjunto de procesos que trabajan en estrecha colaboración, y si algunos pero no todos los procesos están programados para su ejecución, los procesos en ejecución pueden intentar comunicarse con aquellos que no se están ejecutando, lo que provocará que se bloqueen. Con el tiempo, los demás procesos se programarán para su ejecución, pero en ese momento la situación puede revertirse de modo que estos procesos también bloqueen la espera de interacciones con otros. Como resultado, la aplicación avanza a un ritmo de como máximo una interacción entre procesos por segmento de tiempo y tendrá un rendimiento bajo y una latencia alta .

Implementación

La programación conjunta consta de dos ideas:

Algunas técnicas de coprogramación exhiben fragmentos de procesos que no se ejecutan simultáneamente con el resto del conjunto coprogramado. Estos algoritmos suelen minimizar la aparición de estos fragmentos. La programación de pandillas es una variante más estricta de la coprogramación que no permite fragmentos por completo.

Tipos de programación conjunta

Los investigadores han clasificado tres tipos de coscheduling: coscheduling explícito , programación local y coscheduling implícito o dinámico . [1]

La programación conjunta explícita requiere que todo el procesamiento se realice al mismo tiempo y, por lo general, se implementa mediante programación global en todos los procesadores. Un algoritmo específico se conoce como programación de pandillas .

La coprogramación local permite a los procesadores individuales programar el procesamiento de forma independiente.

La coprogramación dinámica (o implícita) es una forma de coprogramación en la que los procesadores individuales aún pueden programar el procesamiento de forma independiente, pero toman decisiones de programación en cooperación con otros procesadores.

Historia

El término "coprogramación" fue introducido por Ousterhout (1982). La definición original es que el conjunto de trabajo del proceso debe programarse conjuntamente (programarse para su ejecución simultáneamente) para que el programa paralelo avance .

Ver también

Notas

  1. ^ Fabrizio Petrini, Wu-chun Feng. Utilización mejorada de recursos con programación programada en búfer , Journal of Parallel Algorithms and Applications, 2000