Introduzione alla gestione della memoria RPC

Nel contesto di RPC, la gestione della memoria prevede:

  • Allocazione e deallocazione della memoria necessaria per simulare un singolo spazio indirizzi concettuale tra il client e il server nei diversi spazi indirizzi dei thread del client e del server.
  • Determinazione del componente software responsabile della gestione della memoria, ovvero l'applicazione o lo stub generato da MIDL.
  • Selezione degli attributi MIDL che influiscono sulla gestione della memoria: attributi direzionali, attributi del puntatore, attributi di matrice e attributi ACF [ byte_count], [ allocate]e [ enable_allocate].

Quando un programma chiama una funzione o una routine nello spazio indirizzi, la gestione della memoria è più semplice rispetto a un'applicazione distribuita. Per illustrare, il diagramma seguente illustra un albero binario. Per passare questa struttura di dati a una routine nello spazio indirizzi, un programma passa semplicemente un puntatore alla radice dell'albero.

un albero binario, con puntatori alla struttura dei dati ospitati nella radice dell'albero

Le applicazioni RPC client/server condividono i dati tra due spazi di memoria diversi. Questi spazi di memoria possono o meno trovarsi nello stesso computer. In entrambi i casi, il client e il server non hanno accesso diretto allo spazio di memoria dell'altro. RPC dipende dalla possibilità di simulare lo spazio indirizzi del programma client nello spazio indirizzi del programma server. Deve anche restituire dati, inclusi i dati nuovi e modificati, dal server alla memoria client.

Nei casi come l'albero binario illustrato nel diagramma precedente, non è sufficiente passare un puntatore al nodo radice a una routine remota. Il programma o gli stub devono passare l'intero albero allo spazio indirizzi del server affinché la routine remota funzioni su di essa.