Présentation de la gestion de la mémoire RPC

Dans le contexte de RPC, la gestion de la mémoire implique les opérations suivantes :

  • Allocation et libération de la mémoire nécessaire pour simuler un espace d’adressage conceptuel unique entre le client et le serveur dans les différents espaces d’adressage des threads du client et du serveur.
  • Détermination du composant logiciel responsable de la gestion de la mémoire : l’application ou le stub généré par MIDL.
  • Sélection des attributs MIDL qui affectent la gestion de la mémoire : attributs directionnels, attributs du pointeur, attributs du tableau et [ _ nombre d’octetsdes attributs ACF ] , [ allocation ] et activation de l' [ _ allocation ] .

Lorsqu’un programme appelle une fonction ou une procédure dans son espace d’adressage, la gestion de la mémoire est plus simple que dans une application distribuée. Pour illustrer cela, le diagramme suivant illustre une arborescence binaire. Pour passer cette structure de données à une procédure dans son espace d’adressage, un programme passe simplement un pointeur vers la racine de l’arborescence.

arborescence binaire, avec des pointeurs vers des données de structure hébergées à la racine de l’arborescence

Les applications RPC client/serveur partagent des données entre deux espaces mémoire différents. Ces espaces mémoire peuvent se trouver ou non sur le même ordinateur. Dans les deux cas, le client et le serveur n’ont pas d’accès direct à l’espace mémoire de l’autre. RPC dépend de la capacité à simuler l’espace d’adressage du programme client dans l’espace d’adressage du programme serveur. Elle doit également retourner les données, y compris les données nouvelles et modifiées, du serveur à la mémoire du client.

Dans les cas tels que l’arborescence binaire représentée dans le diagramme précédent, il n’est pas suffisant de passer un pointeur vers le nœud racine à une procédure distante. Soit le programme, soit les stubs doivent transmettre l’intégralité de l’arborescence à l’espace d’adressage du serveur pour que la procédure distante fonctionne sur celle-ci.