2010-12-04 12 views
2

可能性の重複:
What is the difference between vmalloc and kmalloc?kmallocとvmallocの主な違いは何ですか?

+0

コーディーグレー、この質問を投稿する前に私はこのisteを見ていない? – Muthuraman

+1

あなたの最後のコメントに関しては、このサイトを検索する前にこの質問を投稿したと言っているのですか、質問していますか?私がリンクしている質問にあなたのために未回答のものがある場合は、あなたの質問を編集してください。さもなければ、私はこれがかなり素早く複製として閉じられると期待しています。 –

+0

@Cody Grey:私は詳細なメモリ割り当ての比較が必要です.... – Muthuraman

答えて

2

kmallocのは ページが物理RAMに連続して配置されている物理的に連続したメモリ、メモリを割り当て、詳細な説明に教えてください。 vmallocは、カーネルの仮想メモリ空​​間に連続しているメモリ(つまり、 ページがRAMに連続していないが、カーネル がそれらを1つのブロックとみなしていることを意味する)を割り当てます。

kmallocは、あなたが非常に大きな領域を必要としない限り、あらかじめ決められた方法です エリア。問題は、あるハードウェアとの間でDMAをやりたいのであれば、kmallocを使う必要があり、おそらくより大きい チャンクが必要になるでしょう。解決方法は、メモリが断片化される前に、できるだけ早くメモリを割り当てることです。 メモリが断片化します。

小さいチャンク(ページまたは数ページ)だけを割り当てる場合は、kmallocを使用して詳細を心配しないでください。 :)答え上記

は、ソースからコピーされました - http://kerneltrap.org/node/4020

+1

ソース:http://kerneltrap.org/node/4020 –

1

物理的に連続したメモリを返すkmallocの、 kmallocのメモリを予約して がロックされている、それは交換することができないあなたの場合は、メモリ は、断片化の対象となります カーネルスペースで連続マッピングを必要としない場合は、vmallocを使用して を使用して断片化の問題を回避できます。

関連する問題