Locking a Page
A call to mlock
()
requests that one segment of memory be locked into the
system's physical memory. The pages that make up the specified segment are faulted
in. The lock count of each page is incremented. Any page whose lock count value is
greater than zero is exempt from paging activity. For more information, see the
mlock
(3C) man page.
A particular page can be locked multiple times by multiple processes through different mappings. If two different processes lock the same page, the page remains locked until both processes remove their locks. However, within a given mapping, page locks do not nest. Multiple calls of locking interfaces on the same address by the same process are removed by a single unlock request.
If the mapping through which a lock has been performed is removed, the memory segment is implicitly unlocked. When a page is deleted through closing or truncating the file, the page is also implicitly unlocked.
Locks are not inherited by a child process after a fork
()
call. If a process
that has some memory locked forks a child, the child must perform a memory locking
operation on its own behalf to lock its own pages. Otherwise, the child process
incurs copy-on-write page faults, which are the usual penalties that are associated
with forking a process. For more information, see the
fork
(2) man page.