Sistemas operativos modernos

porcionar algunos atributos y código intermediario que otros dispositivos usarán después para tener acceso a él. Un dispositivo o usuario que está buscando un servicio dado puede preguntar al servicio de búsqueda si sabe de alguno. La solicitud podría incluir algunos de los atributos que usan los dis­ positivos al registrarse. Si la solicitud tiene éxito, se devuelve al solicitante el código interme­ diario que proporcionó el dispositivo cuando se registró, y se ejecuta ese código para ponerse en contacto con el dispositivo. Así, un dispositivo o usuario puede hablar con otro dispositivo sin saber dónde está o siquiera qué protocolo entiende. Los clientes y servicios Jini (dispositivos de hardware o software) se comunican y sincro­ nizan empleando JavaSpaces, que siguen el modelo del espacio de tupias de Linda pero con algunas diferencias importantes. Cada JavaSpace consta de cierto número de entradas con tipos estrictos. Las entradas se parecen a las tupias de Linda, excepto que sus tipos son estric­ tos, mientras que las tupias de Linda no tienen tipo. Cada entrada consta de cierto número de campos, cada uno de los cuales tiene un tipo básico de Java. Por ejemplo, una entrada de tipo empleado podría consistir en una cadena (para el nombre), un entero (para el departamento), un segundo entero (para la extensión telefónica) y un booleano (para indicar si el empleado es de tiempo completo o no). Sólo están definidos cuatro métodos para operar con un JavaSpace (aunque dos de ellos tie­ nen una forma variante): 1. Write: coloca una nueva entrada en el JavaSpace. 2. Read: copia del JavaSpace una entrada que coincida con una plantilla. 3. Take: copia y saca una entrada que coincida con una plantilla. 4. Notify: avisa al invocador cuando se escribe una entrada coincidente. El método write proporciona la entrada y especifica su fiempo de arrendamiento, al término del cual deberá desecharse. En contraste, las tupias de Linda permanecen hasta que se quitan. Un JavaSpace puede contener varias veces la misma entrada, así que no es un conjunto matemáti­ co (igual que en Linda). Los métodos read y take incluyen una plantilla para la entrada que se está buscando. Cada campo de la plantilla puede contener un valor específico que debe coincidir, o bien un como­ dín “no importa”, que coincide con todos los valores del tipo correcto. Si se encuentra una en­ trada que coincide con la plantilla, se devuelve y, en el caso de take, también se elimina del JavaSpace. Cuando uno de estos dos métodos de JavaSpace fienen dos variantes, que difieren en el caso en que ninguna entrada coincida. Una variante regresa de inmediato, con una indi­ cación de fracaso; la otra espera hasta que se vence un plazo (dado como parámetro). El método notify registra un interés en una planfilla dada. Si más adelante se introduce en el JavaSpace una entrada coincidente, se ejecuta el método notify del invocador. A diferencia del espacio de tupias de Linda, JavaSpace maneja transacciones atómicas. Con ellas, es posible agrupar varios métodos de modo que, o todos se ejecuten, o ninguno lo haga. Durante la transacción, los cambios efectuados al JavaSpace no son visibles fuera de la

RkJQdWJsaXNoZXIy MjI4NDcx