15.1 Using Shared Memory
Application programs access shared memory by mapping
galaxywide shared sections. The programming model is the
same as for standard OpenVMS global sections, that is you
create, map, unmap, and delete them on each instance where
you want to use them. Some shared memory section????
characteristics are:
* Pages start out as demand zero with pre-allocated shared
PFNs.
* Pages are not counted against your working set.
* Once the page is valid in your process' page table it stays
valid until it is deleted; shared memory section pages are
never paged to disk.
* You must create the shared section on each instance
where you want to access shared memory.
* Sections can be temporary or permanent.
* Sections can be group or system global sections.
* Galaxywide shared sections use a different name space
than traditional global sections.
* Section versions specified in the ident_64 field are vali-
dated throughout the Galaxy.
* Only one shared section with a given name and UIC
group can exist in a sharing community. This is different
from traditional global sections where multiple versions
can coexist.
* The SHMEM privilege is required to create a shared
memory section.
From a programmer's point of view, shared memory global
sections are similar to memory resident sections. You use the
same system services to create galaxywide shared sections
that you would also use to create memory resident sections.
Setting the flag SEC$M_SHMGS lets the service operate on a
shared memory global section.
In contrast to memory resident sections the Reserved
Memory Registry is not used to allocate space for galaxywide
sections. Shared memory is not used for normal OpenVMS
paging operations and therefore need not be reserved.