Skip to main content

¿Qué es la programación distribuida?

La programación distribuida es una forma de programación paralela o computación paralela. La programación paralela involucra computadoras y unidades informáticas dentro de las computadoras que trabajan simultáneamente en un problema particular, como predecir el clima del mañana. Las unidades informáticas pueden ubicarse y coordinarse muy de cerca o pueden ubicarse separadas. Cuando las unidades informáticas están separadas, se llama programación distribuida. En tal escenario, muy a menudo las unidades informáticas difieren entre sí, y el sistema operativo y la configuración de la red también difieren, lo que hace que la programación de la actividad informática sea particularmente difícil.

Al resolver un problema de manera distribuida, el programa debe dividirse para que partes del programa puedan ejecutarse en las diferentes unidades informáticas; Estas partes a menudo se denominan "procesos". Los procesos se ejecutan simultáneamente pero necesitan comunicar entradas y resultados entre sí. Si los procesos se ejecutan en un hardware diferente, como una parte que se ejecuta en Intel y otra que se ejecuta en SUN, entonces los programas deben compilarse y optimizarse de manera diferente.

Una forma de resolver un problema suficientemente difícil es dividir las partes de entrada y hacer que las diferentes unidades de cómputo trabajen en las diferentes partes utilizando el mismo algoritmo, el conjunto de reglas o pasos para la resolución de problemas. Por ejemplo, para descifrar un genoma de 10,000 pares, los primeros 1,000 pares podrían asignarse a la primera unidad de cómputo, los segundos 1,000 pares asignados a la segunda unidad de cómputo y así sucesivamente, todos utilizando el mismo algoritmo. Con la programación distribuida, una ventaja es que las diferentes unidades informáticas podrían ejecutar diferentes algoritmos para resolver el mismo problema, lo que llevaría a una solución significativamente mejor. Esto es similar a resolver un rompecabezas con algunas personas que juntan el borde mientras que otras juntan piezas de un color en particular.

La coordinación de los procesos informáticos distribuidos puede ser una tarea particularmente difícil. Algunas unidades informáticas pueden fallar o pueden interrumpirse para manejar otro trabajo. Los mensajes que contienen las entradas o los resultados del cálculo pueden no llegar a sus destinos. Si los programas se escriben de manera ingenua, la pérdida de una unidad de cómputo o algunos mensajes pueden ocasionar que se cuelgue todo el conjunto de computadoras.

En la programación distribuida, un proceso podría ser el proceso de control, esencialmente haciendo que el trabajo sea realizado por los otros procesos, o todos los procesos podrían funcionar de manera punto a punto sin que ningún proceso sea el "maestro". Algunos ejemplos de problemas intentados con la programación distribuida incluyen el análisis de datos geológicos para recursos como el petróleo, el modelado de proteínas y moléculas biológicas, el descifrado de mensajes codificados y simulaciones militares. El proyecto SETI para buscar vida extraterrestre inteligente a partir de los mensajes de radio recibidos por la Tierra es quizás uno de los ejemplos más conocidos.