Introducción a la administración de memoria RPC
En el contexto de RPC, la administración de memoria implica:
- Asignar y desasignar la memoria necesaria para simular un único espacio de direcciones conceptuales entre el cliente y el servidor en los distintos espacios de direcciones del cliente y los subprocesos del servidor.
- Determinar qué componente de software es responsable de administrar la memoria: la aplicación o el código auxiliar generado por MIDL.
- Selección de atributos MIDL que afectan a la administración de memoria: atributos direccionales, atributos de puntero, atributos de matriz y atributos de ACF [ byte_count], [ asignar] y [ enable_allocate].
Cuando un programa llama a una función o procedimiento en su espacio de direcciones, la administración de memoria es más sencilla que en una aplicación distribuida. Para ilustrarlo, en el diagrama siguiente se muestra un árbol binario. Para pasar esta estructura de datos a un procedimiento en su espacio de direcciones, un programa simplemente pasa un puntero a la raíz del árbol.
Las aplicaciones RPC de cliente/servidor comparten datos entre dos espacios de memoria diferentes. Estos espacios de memoria pueden estar o no en el mismo equipo. En cualquier caso, el cliente y el servidor no tienen acceso directo al espacio de memoria entre sí. RPC depende de la capacidad de simular el espacio de direcciones del programa cliente en el espacio de direcciones del programa de servidor. También debe devolver datos, incluidos los datos nuevos y modificados, desde el servidor a la memoria del cliente.
En casos como el árbol binario que se muestra en el diagrama anterior, no es suficiente pasar un puntero al nodo raíz a un procedimiento remoto. El programa o los códigos auxiliares deben pasar todo el árbol al espacio de direcciones del servidor para que el procedimiento remoto funcione en él.