判断某个页框pfn是否有效(section和root)

前言

在一些系统中,物理地址空间存在许多的空洞——无效区域
内核需要管理有效区域,只为或尽量只为有效区域中的页框建立page结构,避免物理内存的浪费

如何管理有效区域?

  • 以页框为粒度?如位向量、…………
    空间复杂度同页框(无效+有效)个数线性相关,扩展性差
  • 以若干长度不等的有效或空洞区域为粒度?如线段树、…………
    时间复杂度差,和有效区域个数成log关系

Linux内核以section为粒度

时间和空间的折中,并牺牲了一定的准确性,理论上

Linux内核将物理地址空间划分成若干个section

  • 每个section大小一样,拥有PAGES_PER_SECTION(0x8000)个页框,即128MB
  • 物理地址划分:
    • bit0—bit11:页内字节偏移量
    • bit12—bit26:section内的页框偏移量
    • bit12—bit45:页框号
    • bit27—bit45:section号
    • 共计NR_MEM_SECTIONS(0x80000)个section
  • 内核使用mem_section描述一个section
struct mem_section {
    un
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值