Within a running ChorusOS system, access to persistent memory is provided by a ChorusOS process known as the Persistent Memory Manager. The Persistent Memory Manager exports a specific API for allocating and freeing blocks of memory in the persistent memory bank. This API differs from the API used for allocating and deallocating traditional ChorusOS memory regions (rgnAllocate(2K), rgnFree(2K), svPagesAllocate(2K) and svPagesFree(2K)) for the following reasons:
Persistent memory blocks, by definition, persist across a process or site restart. The API provided for manipulating traditional ChorusOS memory regions does not support memory recovery after a restart.
Persistent memory blocks, unlike traditional memory regions, are named. This name is used to retrieve a block of memory allocated in the persistent memory bank.
Persistent memory blocks, unlike traditional memory regions, can be grouped, for the purposes of simultaneous deallocation. In other words, a single API call can free multiple blocks of persistent memory (which may have been allocated by different processes in the ChorusOS system).
The Persistent Memory Manager API is available to all ChorusOS processes (not just restartable processes). This section describes the use of this API.