> malloc申请内存时会导致sys_brk()的调用,执行到do_brk()中make_pages_present()
> 会对新区间(VMA)每个页面模拟一次缺页异常,
>在这里会对每个页面分配物理内存页面的。
你说的是指这段代码吗?
unsigned long do_brk(unsigned long addr, unsigned long len)
{
struct mm_struct * mm = current->mm;
struct vm_area_struct * vma, * prev;
unsigned long flags;
......
mm->total_vm += len >> PAGE_SHIFT;
if (flags & VM_LOCKED) {
mm->locked_vm += len >> PAGE_SHIFT;
make_pages_present(addr, addr + len);
}
return addr;
......
}
这里是要判断条件的,只有设置了VM_LOCKED标记的时候,才会调用make_pages_present()的。
Kernel Version is 2.4.20-8 (Redhat 9.0)