システムインタフェース

mlock(3C)munlock(3C)

mlock(3C) は、指定されたアドレス範囲にあるページを物理メモリでロッキングします。(このプロセスまたは他のプロセスで) ロッキングされたページを参照しても、入出力操作を必要とするページフォルトが生じることはありません。この操作は物理資源を拘束し、通常のシステム操作を破壊する可能性があるため、mlock(3C) を使用できるのはスーパーユーザだけに制限されています。設定に依存するページ制限だけがメモリ内にロッキングされます。この制限を越えると、mlock(3C) 呼び出しは失敗します。

munlock(3C) は、物理ページのロッキングを解放します。1 つのマッピングのアドレス範囲で複数の mlock(3C) 呼び出しを行なっている場合も、1 回の munlock(3C) 呼び出しだけでロッキングが解放されます。ただし、同じページの異なったマッピングが mlock(3C) で処理されている場合は、すべてのマッピングへのロッキングが解放されるまでページのロッキングは解除されません。

ロッキングは、マッピングが mmap(2) 操作で置き換えられるか、munmap(2) で削除された場合にも解放されます。

MAP_PRIVATE マッピングに伴う「書き込み時コピー」イベントの際に、ロッキングはページ間を移転されるため、MAP_PRIVATE マッピングを含むアドレス範囲のロッキングは、「書き込み時コピー」のリダイレクトに合わせて透過的に保持されます (リダイレクトについては、前出の mmap(2) を参照してください)。