At run time, OpenEdge manages the execution of memory-mapped r-code using the following components:
Shared memory buffer — The portion of shared memory that the operating system allocates and uses to store r-code segments for members in a memory-mapped procedure library
Segment descriptor table — An in-memory table that references the r-code segments required by all executing members, including the location of each r-code segment in memory and usage count information
R-code directory — An in-memory table that contains information about each executing member, including r-code size, usage count, segment descriptions, and a reference to the segment descriptor table for each segment
OpenEdge uses the segment descriptor table and the r-code directory to manage r-code from operating system files, standard libraries, and memory-mapped libraries.
The following image shows the layout for the memory-mapped r-code execution environment.
In the above image, OpenEdge locates the cust.r and orders.r members in a memory-mapped library. Note that all r-code segments in a memory-mapped library are located in shared memory. When OpenEdge needs a segment, it executes the segment directly from shared memory.