仮想メモリ管理でVMAを操作するときの修正とはどういう意味ですか?

仮想メモリ管理でVMAを操作するときの修正とはどういう意味ですか?

私が読んでいる「Linux仮想メモリマネージャについて」ゴーマンの地音。

存在する第4章プロセスアドレス空間について、作成、ロック、ロック解除などのVMA操作を紹介するときは、テキストに「修復領域」と呼ばれます。 「修理」とは正確に何を意味しますか?同じ方法で他のVMA操作にも適用されますか?

詳細な見積もり:

Linuxはsys_mlock()によって実装されたシステムコールmlock()を介して特定のアドレス範囲のページをメモリにロックすることができ、その呼び出しグラフは図4.10に示されています。高いレベルでは、機能は簡単です。ロックするアドレス範囲のVMAを作成し、VM_LOCKEDフラグを設定してから、make_pages_present()を使用してすべてのページが存在するようにします。 sys_mlockall() にマップされた 2 番目のシステムコール mlockall() も提供されます。これは、呼び出しプロセスの各VMAを除いてsys_mlock()と同じことを行う簡単な拡張です。どちらの関数も、コア関数do_mlock()を使用して影響を受けたVMAを見つけ、どの関数が必要かを判断する実際の作業を実行します。修理エリア以下に説明します。

システムコール munlock() および munlockall() はロック関数の結果を提供し、それぞれ sys_munlock() および sys_munlockall() にマップされます。これらの機能は、広範な検査を必要としないため、ロック機能よりもはるかに簡単です。それらはすべて同じdo_mmap()関数を使用します修理エリア

地図を作成したい場所に既存のゾーンが存在する場合、修正するこれを新しいマッピングに適用します。

この本で使用されているカーネルのバージョンはLinux 2.4.22です。

ベストアンサー1

この場合、「固定」とは、VMAを作業中の領域と一致するように適切にマージまたは分割することを意味します。

  • ロックまたはロック解除する領域がその領域を含むVMAよりも小さい場合は、VMAを分割する必要があります。
  • 連続したVMAをマージできる場合は、マージする必要があります。

あなたが読んでいる文書は古いですが、それはまだ現在のカーネルに適用されます。修正は以下で処理中です。mlock_fixup、これは呼び出されます。vma_mergeそしてsplit_vma適切です。また、見ることができます削除不可能なLRUインフラストラクチャを説明する文書

おすすめ記事