6

このトピックを Google とこのサイトで検索しようとしましたが、適切な答えが見つかりません。

Linux の起動プロセス中に、設定された物理アドレスに大きな連続したメモリ ブロック (数 MB) を割り当てようとしています。しかし、「alloc_bootmem」関数をどこに配置すればよいかはまだ明確ではありません。ARM プロセッサで Linux を実行しています。

  1. 私の知る限り、「alloc_bootmem」への呼び出しを含むドライバーを作成し、そのドライバーをカーネルに直接コンパイルする方法があります。

  2. もう 1 つの方法は、Linux カーネル ソースのどこかに「alloc_bootmem」を追加することです。

  3. 私が存在すると思う最後の方法は、boot.rc?(確かではありません) のような設定ファイルを作成して、Linux の起動中に割り当てたいメモリを予約することです。

この質問に対する明確な方法や回答へのリンクがあれば、本当に助かります。基本的な質問は、「「alloc_bootmem」を起動中に機能させるには、どこで呼び出す必要があるかということです。

ありがとう、シャリル

4

1 に答える 1

2

http://lwn.net/Kernel/LDD3/の第 8 章を見てください。起動初期段階のメモリ割り当てについて説明しています。

メモリ割り当ての起動に関する詳細は、次の場所にあります。

https://www.kernel.org/doc/gorman/html/understand/understand022.html

この機能は、システムの起動時に大きなメモリ チャンクを割り当てるために使用され、仮想メモリではなく物理メモリを使用します。MMUが起動して実行された後、メモリにアクセスする方法はありません。

大きな連続メモリ割り当てを探している場合は、おそらく別のアロケータを使用する必要があります。

http://lwn.net/Articles/396702/

于 2013-09-04T11:06:58.377 に答える