vmalloc()が新しいメモリを割り当てるプロセスのページテーブルは何ですか?

vmalloc()が新しいメモリを割り当てるプロセスのページテーブルは何ですか?

私はこれがシステムコールを作成するプロセスのメモリでこれを行うと思います。それでは、残りのプロセスはそのスペースをどのように使用しますか?カーネルは、バッファが実際のアドレス空間ではなく仮想アドレス空間を指していることをどうやって知ることができますか?しかし、これは通常のカーネル操作のためのプロセススペースを占めるのと同じです。そうではありませんか?

ベストアンサー1

vmallocカーネルアロケータであり(必ずしもそうではありません)、プロセスに関連しています。ほとんどの場合、カーネルはリニアメモリではなく仮想メモリもチェックします。特別な点vmallocは、連続した仮想メモリのみを割り当て、kmalloc物理メモリは連続的に割り当てないことです。どちらも仮想アドレスを返します。

vmallocとは異なり、新しいページテーブルエントリは事前マッピングされた領域からkmalloc割り当てる必要があります。kmallocページテーブルツリーの共有部分または、KPTIが有効になっている場合は、ツリーのカーネル専用部分にあります。

バラよりLinuxデバイスドライバ詳しくは第8章をご覧ください。

おすすめ記事