linux源码解析–缺页异常之匿名页面

本文详细探讨了Linux系统中缺页中断的触发条件,包括页表项未置位、pte表项为空等情况,并分析了在栈扩展、malloc分配内存和mmap匿名映射时的应用场景。此外,文章还介绍了Linux内存映射的两个关键规律,以及私有匿名缺页的处理流程。最后,讨论了系统零页如何节省内存并提高性能。
摘要由CSDN通过智能技术生成

【推荐阅读】

浅谈linux 内核网络 sk_buff 之克隆与复制

深入linux内核架构--进程&线程

了解Docker 依赖的linux内核技术

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 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值