mmapドキュメントには、MAP_NORESERVEフラグについての説明があります。MAP_NORESERVEのmmapは物理メモリを予約していますか?
このマッピングにスワップスペースを予約しないでください。スワップ空間が 予約されている場合、 マッピングを変更することができるという保証があります。スワップ領域が予約されていない場合、利用可能な物理メモリがない場合には、 書き込み時にSIGSEGVが得られる可能性があります。
私が実際に必要とするのは、仮想メモリアドレスを予約し、実際の物理メモリを割り当てないことです。これはMAP_NORESERVEでmmapを使って行うことができますか?私が物理メモリを使いたいなら、MAP_NORESERVEを使ってmmapを通して割り当てられたアドレス範囲内のMAP_FIXEDを使って再度mmapします。
まとめると、私は、カーネルがMAP_NORSERVEフラグを使ってmmapで割り当てられたメモリの物理ページを予約しないようにします。十分な物理メモリがあれば、カーネルは物理ページを割り当てますか?
MAP_RESERVEは物理メモリ(RAM)ではなくバッキングストレージ(スワップスペース)に関するものです。物理メモリーは決して予約されていません(カーネルメモリーやshmemのようないくつかの特別なアプリケーションを除いて) – wildplasser
本当にスワップスペースとは何ですか?そして、MAP_RESERVEがこの点でどのように有利なのか、つまり、スワップ領域を割り当てないと便利なのでしょうか? – MetallicPriest