3

mlock()マニュアルページによると:

指定されたアドレス範囲の一部を含むすべてのページは、呼び出しが正常に戻ったときにRAMに常駐することが保証されています。ページは、後でロックが解除されるまでRAMに留まることが保証されています。

これは、これらのページの物理アドレスがその存続期間中、またはロックが解除されるまで一定であることも保証しますか?

そうでない場合(つまり、メモリマネージャで移動できるが、RAMに残っている場合)、新しい場所、またはそのような変更が発生したときのイベントについて何か言えることはありますか?

アップデート:

RAM内のロックされたページの一貫性について何か言うことができますか?CPUにキャッシュがある場合、mlock-ingはキャッシュとのRAMの一貫性を保証しますか(ライトバックキャッシュを想定)?

4

1 に答える 1

5

いいえ。管理されているページはmlocked、カーネルの不可避のLRUリストを使用して管理されています。名前が示すように(そしてmlock()保証する)、これらのページはRAMから削除できません。ただし、ページは1つの物理ページフレームから別の物理ページフレームに移行できます。Unevictable LRUインフラストラクチャからの抜粋を次に示します(わかりやすくするためにフォーマットを追加)。

ロックされたページの移行

移行中のページはLRUリストから分離され、ページのマッピング解除、ページのアドレススペースエントリの更新、コンテンツと状態のコピーの間、ページテーブルエントリがを参照するエントリに置き換えられるまでロックされたままになります。新しいページ。 Linuxは、mlockedページおよびその他の不可避のページの移行をサポートしています。 これには、PG_mlockedPG_unevictable状態を古いページから新しいページに移動するだけです。

于 2014-01-21T22:10:27.490 に答える