加载中...
多级页表是一种通过分层结构组织虚拟地址到物理地址映射的技术。它把庞大的单级页表拆分为多层,按需分配各级表项,从而大幅节省页表本身占用的内存空间。

| 用途 | 虚拟地址映射 |
| 优势 | 节省页表内存 |
| 典型层数 | 四级或五级 |
| 配套硬件 | MMU、TLB |
多级页表是操作系统实现虚拟内存时采用的分层地址映射结构。它将一个巨大的线性页表分解为多个层级的小表,只有实际用到的部分才需要在内存中建立,从而解决了单级页表空间开销过大的问题。
在虚拟内存系统中,每个进程都拥有独立的虚拟地址空间,需要一张页表记录虚拟页到物理页的映射。若采用单级页表,64 位地址空间下页表条目数量惊人,单是页表本身就会消耗海量内存。多级页表把虚拟地址划分为若干字段,逐级索引:高位字段选择上层目录项,该项指向下一级表,如此层层查找,最终定位到物理页框号和页内偏移。由于稀疏地址空间中大部分区域并未使用,对应的下级表可以完全不分配。
x86-64 架构常用四级或五级页表,每级索引若干位,配合转译后备缓冲区缓存最近的映射结果,以掩盖多次访存带来的延迟。
几乎所有支持虚拟内存的通用操作系统都使用多级页表管理进程地址空间。它使得进程可以拥有巨大而稀疏的地址空间,却只为真正使用的内存付出页表代价;同时为进程隔离、写时复制、内存共享等机制提供了统一的映射基础。
问:多级页表会不会让访存变慢?答:每次查表需要多次访问内存确实增加了开销,但处理器通过转译后备缓冲区缓存常用映射,绝大多数访问都能命中缓存而无需完整遍历,因此实际性能影响有限。
问:为什么级数越来越多?答:随着虚拟地址位数增加,单纯增加每级索引位会让单表过大,分成更多层级能更细粒度地按需分配,更好地覆盖更大的地址空间。

| 用途 | 虚拟地址映射 |
| 优势 | 节省页表内存 |
| 典型层数 | 四级或五级 |
| 配套硬件 | MMU、TLB |
登录 后参与讨论
暂无讨论,来发表第一条评论吧