struct page 中 refcount 与 mapcount成员含义的区别

2024.03.10 修改:

在page结构体中,有_mapcount和_refcount两个成员。_refcount是页面拥有的引用总数,而_mapcount是引用页面的页表数。页表映射也是一个引用, 因此_mapcount中的计数也是_refcount的子集,即_refcount应该大于或等于_mapcount。

_refcount可以超过_mapcount的情况包括:

DMA 映射的页面和使用get_user_pages()之类的函数映射到内核地址空间的页面
使用mlock()将页面锁定到内存中 也会增加_refcount

---------------------------------------------- 分割线 ----------------------------------------------------------

2024.02.24 原文(自己的理解):

refcount: 引用计数,表示当前这个page被使用的频率,与lru页面回收算法有关,不常使用的页放在队尾,优先回收。

mapcount: 映射计数,他管理的是物理地址到虚拟地址的映射关系,映射了多少个用户PTE,而在同一个进程中虚拟地址到物理地址的映射关系是唯一的一对,因此mapcount想说明的是 有多少个进程映射了这个物理页。比如在fork时,没有触发写操作之前,父子进程共享同一片虚拟地址空间,父子进程的页表PTE是一模一样的,指向同一片物理内存页。
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值