デマンドページングについて

uClinux 調査環境について - まだ見えない先の
詳解LINUXカーネル p.411
動的なメモリ割り当て手法であるデマンドページングは,ページフォルト例外までページフレーム割り当てを遅延させる.
上記で述べたように,uClinuxではページフォルトは起こらないとしているので,デマンドページングを行うことができない.
詳解 LINUX カーネル 9章 プロセスアドレス空間の序文によると,カーネルが利用するオブジェクトに関しては遅延をさせないで即座に確保し,ユーザモードのプロセスへのメモリ割り当てのみ遅延させる方針であることが記述されている.
ユーザモードプロセスのメモリ管理はメモリリージョン毎に vm_area_struct 構造体で管理される.デマンドページングによりサイズが伸張するのはこの vm_area_struct 構造体オブジェクトである.
heap,stack,mmap の各領域はそれぞれ vma (vm_area_struct オブジェクト) で管理され,デマンドページングにより伸張する.しかし uClinux ではデマンドページングを行うことができないため,vma 生成時に mm/nommu.c do_mmap_private() にて kmalloc を用いて静的にメモリ領域を割り当てる.