The programming model in MILLIPAGE is Sequential Consistency, which is implemented through the Single-Writer/Multiple-Readers (SW/MR) protocol: at any point in time, for any minipage, there can be either read copies or a single writable copy. Thus, parallel applications run on MILLIPAGE as if they were executing on a physically-shared memory SMP machine; there is no need for either explicit or implicit memory synchronization.
Aside from the initial setting of the maximal number of views and the size of the shared-memory, the allocation process is transparent from the programmer point of view. Some restrictions do apply, however, in the sense that only dynamic allocations can be shared; those are the only allocations managed by the DSM mechanism. For this reason, the application should be written so that the sharing unit is equal to the allocation size.
Allocating from the shared memory is performed via a malloc-like API. The returned pointer can point to any of the application view's address spaces (but never to the privileged one). It can then be used in the usual way as if it had been returned by the standard malloc call.