uClinux

sizeof と kobjsize

上記に関連して. uClinuxで使う mm/nommu.c 中の重要関数 do_mmap_pgoff() では, ... struct vm_area_struct *vma = NULL; ... vma = kzalloc(sizeof(struct vm_area_struct), GFP_KERNEL); ... realalloc += kobjsize(vma); askedalloc += sizeof(*vma); …

uClinux 調査環境について

kernel-2.6.22,linux-2.6.22-uc0-big.patch について,CONFIG_MMU,nommu 文字列を含むファイル,および CONFIG_MMU 時に利用される(include,Makefileから呼ばれる)ファイルを調査対象とした.調査内容は,1) mmu 時との相違点,2) 1)が起こる理由,の二つ…

コピーオンライトについて

uClinux 調査環境について - まだ見えない先の 詳解LINUXカーネル p.414 MMU は書き込みが禁止されているページへの変更時にアクセス許可フォルトに起因する例外を発生する. 故意にページテーブルエントリを書き込み禁止にし,変更時までページの複製を遅延…

stack について

uClinux 調査環境について - まだ見えない先の 詳解LINUXカーネル p.405 Linux で使用される ELF バイナリは,fs/binfmt_elf.c load_elf_binary() にて setup_arg_pages() を呼び出して stack 領域の vma オブジェクトを生成する.vma が拡張されるのはペー…

heap について

uClinux 調査環境について - まだ見えない先の 詳解LINUXカーネルp.420 asmlinkage unsigned long sys_brk(unsigned long brk) p.421 MMU(ELFバイナリ) 時は,heap 用の vma は fs/binfmt_elf.c set_brk()にて do_brk() を呼び出すことで生成される(はず).s…

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

uClinux 調査環境について - まだ見えない先の 詳解LINUXカーネル p.411 動的なメモリ割り当て手法であるデマンドページングは,ページフォルト例外までページフレーム割り当てを遅延させる. 上記で述べたように,uClinuxではページフォルトは起こらないと…

ページフォルトについて

uClinux 調査環境について - まだ見えない先の 詳解LINUXカーネル p.401 uClinux では,arch/arm/head.S にて MMU を有効にしていないためページ変換フォルトによるアボートは発生しない. ページ変換フォルトによりアボートされたアクセスがデータアクセス…

FLAT バイナリについて

data,bss,heap,stack を含む vma について,kmalloc() で領域を確保するため,確保される実際のサイズが 2 の冪乗となる.FLAT では,一度領域を確保した後で実際のサイズが大きくなっていた場合,そのサイズで do_mremap() しなおす.また,その差分が heap…

uClinux調査

加筆修正して,2007-11-16 - まだ見えない先の にて公開.