Einführung in die RPC-Speicherverwaltung
Im Kontext von RPC umfasst die Speicherverwaltung Folgendes:
- Zuweisung und Aufheben der Zuordnung des Arbeitsspeichers, der zum Simulieren eines einzelnen konzeptionellen Adressraums zwischen Client und Server in den verschiedenen Adressräumen der Threads des Clients und servers erforderlich ist.
- Bestimmen, welche Softwarekomponente für die Verwaltung des Arbeitsspeichers verantwortlich ist – die Anwendung oder der von MIDL generierte Stub.
- Auswählen von MIDL-Attributen, die sich auf die Speicherverwaltung auswirken: Direktionale Attribute, Zeigerattribute, Arrayattribute und die ACF-Attribute [ byte_count], [ zuordnen] und [ enable_allocate].
Wenn ein Programm eine Funktion oder Prozedur in seinem Adressraum aufruft, ist die Speicherverwaltung einfacher als in einer verteilten Anwendung. Zur Veranschaulichung zeigt das folgende Diagramm eine binäre Struktur. Um diese Datenstruktur an eine Prozedur im Adressraum zu übergeben, übergibt ein Programm einfach einen Zeiger auf den Stamm der Struktur.
Client-/Server-RPC-Anwendungen nutzen Daten über zwei verschiedene Speicherplätze hinweg. Diese Speicherplätze befinden sich möglicherweise auf demselben Computer oder nicht. In beiden Richtungen haben Client und Server keinen direkten Zugriff auf den Arbeitsspeicher des jeweils anderen. RPC hängt von der Möglichkeit ab, den Adressraum des Clientprogramms im Adressraum des Serverprogramms zu simulieren. Außerdem müssen Daten, einschließlich neuer und geänderter Daten, vom Server in den Clientarbeitsspeicher zurückgegeben werden.
In Fällen wie der im vorherigen Diagramm dargestellten binären Struktur reicht es nicht aus, einen Zeiger auf den Stammknoten an eine Remoteprozedur zu übergeben. Entweder das Programm oder die Stubs müssen die gesamte Struktur an den Adressraum des Servers übergeben, damit die Remoteprozedur darauf ausgeführt werden kann.