“伙伴合并只能聚合已经空闲的正确兄弟。若想让分散自由页变成更大连续区域,可能需要迁移可移动的在用页,更新映射,再释放旧帧;不能移动的页又可能挡住整个过程。大页映射需要对齐连续物理区域时,就会遇…”
八个数据页都在内存里,访问它们仍可能反复遍历页表。TLB理路TLB与地址翻译失效Translation lookaside buffer · TLB miss · TLB invalidation将翻译缓存键、权限和映射生命周期一起核对,区别TLB未命中与缺页,构造改PTE后仍越权的最短反例。缓存的是翻译,不是数据;当翻译条目容不下正在轮流访问的页时,数据驻留与翻译命中就分成两项不同问题。
形式陈述
一条翻译可以覆盖更大的对齐区间
设基本页大小为
对任意偏移
若TLB有
直觉
连续地址共用一个偏移空间
把一份地址簿中连续四栋房屋的四条记录,改成“这一整段都按同样规则平移”,就可以用一条记录描述四倍范围。成立条件是整段映射确实规则、连续并具有统一权限;只有虚拟地址相邻而物理页四散,不能压成这种条目。
因此大页的收益主要发生在需要覆盖较大而有用的地址区域时。若每个大页只访问一个字节,翻译条目数可能仍很多,却要为每个大页准备整片区域。减少页表项或TLB miss,不等于减少实际分配字节。
例子与边界
二十四次访问,零次缺页
MEM-16在本实验中每基本页256字节,取8个相邻、对齐且已经驻留的基本页,对应虚拟基本页号0到7。TLB初始为空,只有2个条目,全相联、LRU替换,单一地址空间。每次访问一页中的固定字节,顺序为 0 1 2 3 4 5 6 7,重复3轮,共24次。
基本页翻译下,循环距离超过2项容量,每次所需页号都已不在TLB,24次全miss。但页表中的映射始终有效,所有24次都能通过遍历取得翻译,缺页次数为0。
再从空TLB重放同一地址序列,改用1024字节大页,每页覆盖4个基本页。翻译标签变为 0 0 0 0 1 1 1 1,重复3轮。第一次碰到标签0、1各miss一次,之后两条翻译都留在TLB,总miss仅2次;数据仍然没有缺页。
名义覆盖从
地址拆分也随页大小改变
取虚地址 0x1A5F。在1024字节即 0x400 的页大小下,大页号为6,页内偏移为 0x25F,因为 0x1A5F = 6 × 0x400 + 0x25F。若该大页映到对齐物理基址 0x6000,物理地址为 0x625F。
若错误地保留256字节页的低8位偏移,只拿 0x5F 去拼接,就丢了大页偏移中的高两位。大页的页号和偏移划分必须一起更新。物理基址 0x6100 虽按基本页对齐,却未按1024字节对齐,不满足本页大页合同。
连续性与稀疏使用的账单
伙伴分配理路伙伴页分配与连续块合并Binary buddy allocation · Buddy system · 伙伴系统用对齐的幂二块分裂与合并管理连续页框,复算异或伙伴、内部碎片,以及空闲总数足够却无法满足大块请求的边界。可以作为取得4帧对齐连续块的工具。若只有四个分散空闲页,基本页映射可能成功,大页分配却失败;压实或回退到小页的成本要另计。这里的4倍关系是教学尺寸,不代表某平台支持256字节硬件页。
另起稀疏快照:在四个不同1024字节大页中各写1字节,实际只改4字节,却需为这些大页分别备好整个物理区域,共4096字节。若按需只分配被碰到的256字节基本页,则对应1024字节。这个比较假定未访问的基本页不分配,也不利用共享零页;不同分配合同会改变占用量。
推论与应用
改小一处权限,可能要拆大页
若一整个大页只有一套读写执行权限,而程序要让其中一个基本页只读、其他仍可写,原条目无法表达这种差异。可以把大页拆成多个基本页映射,再逐页设置权限。拆分涉及页表表示和翻译失效;是否必须拆分底层物理分配,是另一项由实现决定的操作。
同样,合并成大页时必须检查每个子页的物理连续性、权限、后备对象和其他属性是否兼容,并按照翻译失效合同理路TLB与地址翻译失效Translation lookaside buffer · TLB miss · TLB invalidation将翻译缓存键、权限和映射生命周期一起核对,区别TLB未命中与缺页,构造改PTE后仍越权的最短反例。停止使用过时表示。只替换页表中的指针,而不处理仍缓存的小页或大页翻译,不能保证后续访问遵守新权限。
实际机器必须分别量两个层次
本例固定两种页大小都有2个TLB条目,专门隔离粒度作用。现实CPU可能为不同页大小设置不同组数或独立TLB;大页覆盖增加多少,应使用各自容量计算。透明大页与显式大页接口也有不同的保留、回退和拆分行为,不能仅凭“开启了大页”就断言全部映射已变大。
一份可比较的结果应同时记录TLB未命中、真正缺页、物理内存占用、建立/拆分耗时与访问模式。若只交出24变2而省略其余前提,就无法判断这种翻译优化是否值得用于另一个程序。
参考资料
- Arpaci-Dusseau与Arpaci-Dusseau,OSTEP, Ch.19,TLB覆盖与工作集超过TLB容量的讨论。本文2项TLB、256/1024字节与24次访问为自定实验。
- Linux内核文档,“HugeTLB Pages”及“Transparent Hugepage Support”用户指南,查阅于2026-10-09:大页支持、连续物理内存、回退及占用权衡;实现细节依配置与架构而异。