システムインタフェース

キャッシュ制御

SunOS 5.0 から 5.8 の仮想記憶システムは、プロセッサのメモリがファイルシステムのオブジェクトからのデータをバッファリングするキャッシュシステムです。キャッシュの状態を制御または照会するためのインタフェースがあります。

mincore(2)

mincore(2) は、メモリページが指定された範囲のマッピングの対象となるアドレス空間にあるかどうか調べます。mincore(2) がチェックした後でも、データを戻すまでの間にページの状態が変わる可能性があるため、戻された情報は古くなっていることがあります。ロッキングされたページだけが、メモリに残っていることが保証されます。

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) を参照してください)。

mlockall(3C)munlockall(3C)

mlockall(3C)munlockall(3C) は、mlock(3C)munlock(3C) に似ていますが、アドレス空間全体を操作します。mlockall(3C) はアドレス空間にあるすべてのページにロッキングを設定し、munlockall(3C)mlock(3C)mlockall(3C) のどちらで設定されたかに関係なく、アドレス範囲にあるすべてのページのロッキングを解除します。

msync(3C)

msync(3C) は、指定されたアドレス範囲にある修正されたすべてのページを、そのアドレスによってマッピングされているオブジェクトにフラッシュします。これは、ファイルに対する fsync(3C) 操作と同様です。