物理内存分配与回收(1)

在Linux中,CPU访问的地址是虚拟地址空间的虚地址。因此,对于内存的管理,通常是先在虚存空间中分配一个虚存区间,然后才根据需要为此区间分配相应的物理页面并和建立映射,也就是说虚存区间先分配,物理页面后分配。
摘要由CSDN通过智能技术生成

在Linux中,CPU访问的地址是虚拟地址空间的虚地址。因此,对于内存的管理,通常是先在虚存空间中分配一个虚存区间,然后才根据需要为此区间分配相应的物理页面并和建立映射,也就是说虚存区间先分配,物理页面后分配。

1.页描述符
从虚拟内存的角度来看,页就是最小单位。体系结构不同,支持的页大小也不尽相同。大多数32位体系结构支持4KB,而64位体系结构一般会支持8KB。
内核用struct page结构来表示系统中的每个页,也叫页描述符。

struct page {
page_flag_t flags; //用来存放页的状态,而flags的每一位都可以表示一个状态,所以它至少可以同时表示32种不同的状态(这些标志定义在linux/page_flags.h中)
atomic_t _count; //存放页的计数引用,当计数为0时就说明当前内核没有引用这一页,于是在新的分配中就可以使用他。而内核代码不直接检查该域,而是通过 page_count()函数进行检查,该函数唯一参数就是page结构。对该函数而言,返回0表示页空闲,返回正数表示页在使用。
atomic_t _mapcount;
unsigned long private; //一个页所装有的私有数据
struct address_space *mapping; //一个页可以由页缓存(针对以页为操作的所有操作,并考虑了特定体系结构上的页长度,一个主要的例子是映射技术)使用,这就是由mapping域所指向的address_space对象
pgoff_t index;
struct list_head lru; //lru指向最近久未使用(LRU)链表中的相

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值