Algoritmos y Programación Paralela El modelo linda Raúl Rodríguez Cruz Linda es un modelo que puede ser implementado para cualquier lenguaje que provea herramientas para crear y coordinar multiples procesos, algunas ejemplos de implementación son CppLINDA para C++, Simple C-Linda para C o PYLinda para Python. El concepto principal de LINDA es el de “Espacio de Tuplas” a través del cual los procesos se comunican. Este espacio de tuplas es una abstracción de un espacio de memoria compartida el cual se usa de manera asociativa. El espacio de tuplas es donde se almacena la información accesible para todos los procesos. Las tuplas son colecciones de campos de algún tipo soportado por el lenguaje para el que se esta implementando. Estos campos pueden ser de dos tipos, valores de un tipo soportado o variables para recibir la información obtenida del espacio de tuplas, a las variables se les añade ? delante. Primitivas Linda sugiere 4 primitivas además de 2 opcionales. Las primitivas out y eval para añadir datos al espacio de tuplas. Las primitivas rd e inn para obtener o eliminar elementos Además de estas hay dos opcionales inp y rdp que son las versiones predictivas de rd e inn out Añade la tupla al espacio de tuplas Es una primitiva no bloqueante Espacio de tuplas Out(“x”,5) (“x”, 5) in Retira una tupla del espacio de tuplas. Es una primitiva bloqueante si no encuentra ninguna tupla que cumpla los requisitos se bloquea esperando a que sea añadida. Es destructiva, al ejecutarse elimina la tupla obtenida del espacio de tuplas. Si hay mas de una tupla que coincida se obtiene una al azar Espacio de tuplas (“x”, 5) in(“x”,?X) rd Similar a in pero no elimina la tupla del espacio de tuplas. Al igual que in es una primitiva bloqueante si no encuentra ninguna tupla que cumpla los requisitos se bloquea esperando a que sea añadida. Espacio de tuplas (“x”, 5) rd(“x”,?X) inp Es la version predictiva de in. Funciona igual que in pero en vez de guardar en la variable X el valor de la tupla guarda 1 si ha encontrado alguna tupla coincidente y 0 si no. Espacio de tuplas (“x”, 5) inp(“x”,?X) rdp Es la version predictiva de rd. Funciona igual que rd pero en vez de guardar en la variable X el valor de la tupla guarda 1 si ha encontrado alguna tupla coincidente y 0 si no. Espacio de tuplas (“x”, 5) inp(“x”,?X) eval Es similar a out con la diferencia de que los valores de la tupla se evalúan antes de ser introducidos, esta evaluación se hace en paralelo creando un proceso para cada valor. Espacio de tuplas eval(“x”,4!) (“x”, 24)