Sistemas operativos modernos

la idea es sencilla (una vez que se le ha ocurrido a alguien), las implicaciones muchas veces son sutiles. En esta sección examinaremos el concepto, su implementación, así como sus pun­ tos fuertes y débiles. En pocas palabras, lo que Birrell y Nelson sugirieron fue permitir que los programas invo­ quen procedimientos situados en otras CPUs. Cuando un proceso en la máquina 1 invoca un pro­ cedimiento de la máquina 2 , el proceso invocador de la máquina 1 se suspende, y la ejecución del procedimiento invocado se efectúa en la máquina 2. La información puede transmitirse del invocador al invocado en los parámetros y puede devolverse en el resultado del procedimiento. El programador no percibe ninguna transferencia de mensajes ni E/S de ninguna especie. Esta técnica se denomina llamada a procedimiento remoto (RPC; Remóte Procedure Cali) y se ha convertido en la base de una gran cantidad de software para multicomputadoras. Por tradición, el procedimiento invocador se llama cliente y el procedimiento invocado se llama servidor. Tam­ bién usaremos aquí esos nombres. La idea en la que se basa RPC es tratar de que una llamada a procedimiento remoto se pa­ rezca lo más posible a una llamada local. En la forma más sencilla, para llamar a un procedi­ miento remoto, el programa cliente debe enlazarse con un pequeño procedimiento de biblioteca llamado módulo cliente {client stub) que representa al procedimiento servidor en el espacio de direcciones del cliente. De forma análoga, el servidor se enlaza con un procedimiento llamado módulo servidor (server stub). Estos procedimientos ocultan el hecho de que la llamada de pro­ cedimiento del cliente al servidor no es local. Los pasos reales que se siguen para efectuar una RPC se muestran en la figura 8-21. En el paso 1 el cliente invoca a su módulo. Esta es una llamada a un procedimiento local, y los pará- mefi-os se meten en la pila de la forma acostumbrada. En el paso 2 el módulo cliente empaca los parámetros en un mensaje y emite una llamada al sistema para enviar el mensaje. El proceso de empacar los parámetros se denomina marshaling (ordenamiento). En el paso 3 el kernel envía el mensaje de la máquina cliente a la máquina servidora. En el paso 4 el kernel pasa al módulo servidor (que por lo común habrá emifido antes un receive) el paquete que llegó. Por úlfimo, en el paso 5 el módulo servidor invoca al procedimiento servidor. La respuesta sigue el mismo ca­ mino pero en la otra dirección. CPU cliente CPU servidora \ Red Figura 8-21. Pasos para efectuar una llamada a procedimiento remoto, Los módu­ los están sombreados.

RkJQdWJsaXNoZXIy MjI4NDcx