Sistemas operativos modernos

Esta operación “busca” en el espacio de tupias una que conste de la cadena “abe”, el entero 2 y un tercer campo que contenga cualquier entero (suponiendo que i es un entero). Si se halla la tu­ pia, se saca del espacio de tupias y se asigna a la variable i el valor del tercer campo. La com­ paración y la remoción son atómicas, de modo que si dos procesos ejecutan la misma operación in en forma simultánea, sólo una de ellas tendrá éxito, a menos que haya dos o más tupias que coincidan. El espacio de tupias incluso podría contener múltiples copias de la misma. El algoritmo de comparación utilizado por in es directo. Los campos de la primitiva in, llamada plantilla, se comparan (de manera conceptual) con los campos correspondientes de cada tupia del espacio de tupias. Hay una coincidencia si se satisfacen las tres condiciones siguientes: 1. La plantilla y la tupia tienen el mismo número de campos. 2. Los tipos de los campos correspondientes son iguales. 3. Cada constante o variable de la plantilla coincide con el campo de su tupia. Los parámetros formales, que se indican con un signo de interrogación seguido de un nombre de variable o un tipo, no participan en la comparación (excepto para verificar tipos), aunque los que contienen una variable se asignan si hay coincidencia. Si no hay ninguna tupia coincidente, el proceso invocador se suspende hasta que otro pro­ ceso inserte la tupia requerida, y entonces se revive en forma automática al invocador y se le entrega la nueva tupia. El hecho de que los procesos se bloqueen y desbloqueen en forma au­ tomática implica que si un proceso está a punto de producir una tupia y otro está a punto de re­ cibirla, no importa cuál vaya primero. La única diferencia es que si el in se efectúa antes del out habrá un pequeño retraso hasta que la tupia esté lista para eliminarse. El hecho de que los procesos se bloqueen cuando no hay una tupia requerida puede apro­ vecharse de varias maneras. Por ejemplo, se puede utilizar para implementar semáforos. Para crear o ejecutar un up con el semáforo 5, un proceso puede ejecutar out("semáforo S")¡ Para ejecutar un down, ejecutará in("semáforo S"); El estado del semáforo 5 depende del número de tupias (“semáforo S”) que hay en el espacio de tupias. Si no hay ninguna, cualquier intento por obtener una bloqueará al proceso hasta que algún otro proceso proporcione una. Además de out e m, Linda tiene una primitiva read, igual a in, con la salvedad de que no quita la tupia del espacio de tupias. También hay una primitiva eval, que hace que sus paráme­ tros se evalúen en paralelo y la tupia resultante se coloque en el espacio de tupias. Este meca­ nismo puede servir para realizar un cómputo arbitrario, y es así como se crean procesos paralelos en Linda.

RkJQdWJsaXNoZXIy MjI4NDcx