内存管理之匿名页面

匿名页面的产生

1、用户空间通过调用malloc()/mmap()函数来分配内存,在内核空间中发生缺页中断时,do_anonymous_page()产生匿名页;

2、发生写时复制,当缺页中断出现写保护错误时,新分配的页面是匿名页面;

3、执行do_swap_page()函数,从交换分区读回数据时分配的页面,也是匿名页面;

4、迁移页面。

匿名页面的分配函数:do_anonymous_page,刚分配完,匿名页的状态是:

page->refcount = 1;

page->mapcount = 0;

设置PG_swapbacked标志位;

加入LRU_ACTIVE_ANON链表中,并设置PG_lru标志位;

page->mapping只想VMA 中的anon_vma数据结构。

匿名页面的建立是在缺页中断分配完成之后,此时已经建立了进程虚拟地址和物理地址之间的映射关系,用户进程访问虚拟地址就可以访问到匿名页面中的内容。

匿名页面的换出

匿名页面在刚分配的时候会加入到active LRU链表的头部,在活跃LRU链表移动一段时间后 ,会到达链表的尾部,shrink_active_list()会将该页加入到不活跃LRU链表中,然后shri

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以梦为马无处可栖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值