首页
社区
课程
招聘
物理页面的关键流向
发表于: 2026-8-19 18:03 235

物理页面的关键流向

2026-8-19 18:03
235

linux内核中,物理页面一方面会与虚拟页面建立pte映射,另一方面也会与文件或者文件机制有关联,包括:

1. 交换分区(换入/换出)

2. 文件缓存(read()/write())

3. 文件映射(mmap())

4. 共享内存(只利用文件机制,没有IO操作


所以,一个物理页面,在它的生命周期中,可能踏足很多地方,包括:

1. buddy子系统:某个NUMA node的某个zone的某个free_area(通过page->list接入)

2. 文件address_space:&swapper_space、inode->i_mapping(通过page->list接入);

3. lru队列:active_list、inactive_dirty_list、页面所属zone的inactive_clean_list通过page->lru接入

4. hash表:page_hash_table通过page->pprev_hashpage->next_hash接入


下面这张图,描述了各种场景下的关键流向:

(理解了关键流向,剩余流向,以及一些反直觉的情况,自然就好理解了,如果画上所有流向,会非常杂乱,反而不好理解)


要看清全面的流向,需要穷举相关执行路径(不断向上查找caller),例如:

1. active_list流入场景

2. inactive_dirty_list流入场景


反直觉的情况有哪些?

很多,举两个例子:

1. 有pte映射的页面,不一定在active_list

    一是刚分配的匿名页面,并不马上加入active_list,二是通过换入操作恢复映射的页面,也不立即转回active_list。

2. active_list中的页面,也可能没有pte映射

    执行换入时,从文件并不只读取目标页面内容,还会多预读一些页面,这些页面暂且放在active_list,并且不需要建立pte映射。


最后总结一下,是哪些力量在推动页面的流动?

1. 缺页异常:由页面的访问操作触发,最终执行do_page_fault()函数,进行分配、映射或换入;

2. 内核线程:

    kswapd:老化用户进程页面,并挑选不活跃页面进行换出;

    bdflush:将文件缓存页面内容,写入文件;

    kreclaimd:从指定zone的inactive_clean_list回收一个页面,到buddy子系统。

3. 文件访问:

    文件读写:缓存页面由内核使用,不映射到用户空间;

    对mmap()返回内存的读写:mmap()在用户程序中使用,将文件的指定区域,映射到一块用户空间;

    对共享内存的读写:利用文件机制,将不同用户进程的用户空间,映射到相同的物理内存,为进程间通信提供了一种方式。


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 2026-8-19 20:08 被jmpcall编辑 ,原因:
收藏
点赞 0
打赏
分享
最新回复 (3)
雪    币: 8325
活跃值: (14039)
能力值: ( LV9,RANK:300 )
在线值:
发帖
回帖
粉丝
2

我有个执念,希望画一张大图,将linux-2.4.0内核的重要实现,归纳在一起,可以一眼看到一头象,直观的看到不同器官之间的联系,帮助后续学习的人节省大量精力,并且更多的是找个机会,让自己也从中获取收益(比如通过关注我的人,推广点小产品,或者拿个高薪offer之类,实在什么也没收获,过完一生,也算留下来了点东西)。
虽然断断续续,但在有空的时候,都会腾出一部分做这件事,同时又很迷茫。
内核的很多代码,从实用的角度来说,并没有什么分析价值。加上linux-2.4.0是32位内核,并且版本非常老,很多模块,在高版本内核中的实现,已经面目全非了(当前7.x的内核都已经发布了,实际环境,大多数使用的是64位内核,版本也至少是3.10,偶尔还能遇到一点2.6.18内核环境)。
先忽略我目前对内核的理解程度和表达水平,能不能把这件事情做成,以及做成了,又能不能得到自己期望的收益。只说这件事,有价值吗?

最后于 2026-8-19 20:09 被jmpcall编辑 ,原因:
2026-8-19 19:31
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
好想法,期待。。。
2026-8-19 21:05
0
雪    币: 5189
活跃值: (5490)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
内核版清明上河图,
2026-8-20 12:42
0
游客
登录 | 注册 方可回帖
返回