問題タブ [kmalloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kmalloc - vmalloc と kmalloc はいつ使用しますか?
kmalloc は物理メモリと仮想メモリに連続したメモリを割り当て、vmalloc は仮想メモリに連続したメモリを割り当てますが、物理メモリに割り当てられたメモリが連続することを保証しません。
したがって、kmalloc は vmalloc よりもはるかに優れているようです。vmalloc、kmalloc をいつ使用するかわかりませんか? 実際に vmalloc を使用した例を誰か教えてもらえますか?
c - kmalloc() と vmalloc() は 32 ビット システムと 64 ビット システムでどのように使用されますか?
アーキテクチャ: X86、Linux
kmalloc()
とに関連するいくつかのスレッドを調べvmalloc()
ましたが、それらの基本的な違いは知っていますが、まだいくつか疑問があります。基本を理解するためにあなたの助けが必要です。
そのため、32 ビット システムでは、仮想アドレス空間がユーザーとカーネルに分割されていることがわかっています。上位の 1GB メモリ アドレスはカーネルに割り当てられ、下位の 3GB はユーザー空間に割り当てられます。
私がここで間違っていることを訂正してください:
したがって、1GB のうち 896MB はカーネル論理アドレスに 1:1 で (物理的に隣接して) マップされ、128MB は上位メモリ アドレスにアクセスするために使用されます
vmalloc()
。(2GBのRAMがあるとしましょう)ポイント 1 で物理 RAM が 1GB しかない場合はどうなるでしょうか。896MB は、カーネルの論理アドレスと kmalloc() によって達成される物理アドレスの間の 1:1 マッピングです。では、128MB は何に使用されるのでしょうか。なぜ
vmalloc()
これ以上必要なのですか? したがって、カーネル論理アドレスを介して完全にアクセスできる 1GB の RAM がある場合、それは、スレッド/プロセスによって要求されたメモリ量が物理的に連続したアドレスに割り当てられる場合にのみ可能であることを意味します。また、使用可能な物理連続メモリがない場合、割り当てられたメモリは物理的に連続していないためvmalloc()
、128MB のスペースにマップし、そこからアクセスするために使用する必要がありますか?64 ビット システムを使用するとどうなりますか?
kmalloc()
との両方vmalloc()
が膨大な量のアドレス空間を持つことができ、RAM 全体にアクセスできるというのは本当ですか?