【推荐阅读】
1.缺页中断触发条件
(1)pte页表项的PRESENT没有置位
(2)pte表项为空
(3)vma->vm_ops->fault为空(对于私有的匿名页)
2.应用场景
(1)局部变量较大,函数调用较深进行栈扩展 。
(2)malloc从堆空间分配内存,只是分配了虚拟内存空间,没有映射到物理页,第一次访问时发生。
(3)mmap分配匿名页,第一次访问,只是分配了虚拟内存空间,没有映射到物理页,第一次访问时发生。
3.linux内存映射的两个规律
规律1:
mmap等内存映射,会将私有的 vma映射设置为只读 ;
参考mm/mmap.c
pgprot_t vm_get_page_prot(unsigned long vm_flags)
{
pgprot_t ret