少し混乱していますmmap
。
私たちが大きなメモリを使うときにメモリに領域を割り当てるmalloc
この関数を呼び出すことを知っています。mmap
この場合、mmap
プロセスにいくつかのメモリを割り当てることができます。
mmap
しかし、これはハードドライブ上のファイルをメモリにマッピングし、通常のIO(読み取りと書き込み)よりも優れたパフォーマンスを得ることができる技術だと聞きました。
私にとって、上記の2つはまったく別の話です。 1つはメモリ割り当てに関するもので、もう1つはより良い方法でファイルを読み書きすることです。
しかし、なぜ両方とも呼ぶのですかmmap
?これはただ偶然なのか、それとも実際に同じ技術なのでしょうか?
答え1
mmap
方法を提供しますマップメモリページ。Linuxで(何よりも)これらのメモリページにはさまざまなバックアップデバイスがあります。特定のファイルには何もない(匿名マッピングの場合MAP_ANONYMOUS
)、デバイスまたはファイルをスワップできます。
ユースケースはまったく異なりますが、共通のトピックはプロセスにアドレス空間を割り当て、そこにページがマッピングされる方法を定義することです。
mmap
他のユースケース、特に共有メモリがあります。