開始ページ アドレスが 8 バイト アラインされている無料の連続ページ リストを提供できる Linux カーネル API があるかどうか教えてください。
仮想メモリではなく、連続した物理メモリを取得する必要があります。
開始ページ アドレスが 8 バイト アラインされている無料の連続ページ リストを提供できる Linux カーネル API があるかどうか教えてください。
仮想メモリではなく、連続した物理メモリを取得する必要があります。
Paul R が言うように、を使用しますkmalloc
。
1 ページ未満を割り当てる場合、割り当てはそのサイズに合わせて 2 のべき乗に切り上げられます (つまり、40 バイトを割り当てると、アドレスは 64 バイトに揃えられます)。ページ以上を割り当てると、アドレスは 4096 バイトのページに配置されます。
取得するメモリは仮想ですが、物理メモリに 1 対 1 でマップされるため、連続した物理ページが取得されます。
Linux 2.6.22 より前では、128KB に制限されていることに注意してください (アーキテクチャと構成によって異なります)。2.6.22 以降、制限は 4MB です (これもアーキテクチャと構成によって異なります)。