news 2026/6/14 11:49:14

【linux内核】一级页 二级页

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【linux内核】一级页 二级页

深入解析:一级页表与二级页表的核心原理与对比
——操作系统内存管理的关键设计


一、页表的核心作用
页表(Page Table)是操作系统实现虚拟内存到物理内存映射的核心数据结构。它解决了两个关键问题:

  1. 地址空间隔离:每个进程拥有独立的虚拟地址空间,互不干扰。
  2. 内存碎片管理:将物理内存划分为固定大小的页框(Frame),虚拟内存划分为页(Page),通过页表建立离散映射。

二、一级页表(单级页表)

  1. 结构设计
  • 连续数组结构:将整个虚拟地址空间映射为一个连续数组。
  • 直接索引:虚拟页号(VPN)直接作为数组下标,指向页表项(PTE)。
    虚拟地址 = [ 虚拟页号 (VPN) | 页内偏移 (Offset) ] ↓ 页表[VPN] → 物理页框号 (PPN)
  1. 内存占用
  • 固定预分配:进程启动时一次性分配完整页表。
  • 计算示例(32位系统):
    • 虚拟地址空间:4GB(2³²)
    • 页大小:4KB(2¹²)→ 需 2²⁰ = 1,048,576 个PTE
    • PTE大小:4字节 → 总内存占用 4MB(连续物理内存)。
  1. 优缺点
    | 优点 | 缺点 |
    |------------------|--------------------------|
    | 地址转换速度快(单次查询) | 内存浪费严重(即使未使用也占4MB) |
    | 实现简单 | 需连续大块物理内存(易碎片化) |
    | | 扩展性差(不支持大地址空间) |

三、二级页表(多级页表)

  1. 结构设计
  • 分层索引:
    • 一级页表(页目录PGD):存储指向二级页表的指针。
    • 二级页表(PTE表):存储实际物理页框号。
    虚拟地址 = [ PGD索引 | PT索引 | 页内偏移 ] ↓ ↓ PGD[ i ] → PT[ j ] → 物理页框号
  1. 内存优化机制
  • 一级页表固定分配:
    • 体积小(32位系统仅 4KB),进程启动时分配。
  • 二级页表按需动态创建:
    • 仅当进程访问某内存区域时,才分配对应的二级页表。
    • 示例(进程使用1GB内存):
      • 一级页表:4KB
      • 二级页表:256个 × 4KB = 1MB
      • 总占用:1.004MB(比单级页表节省75%)。
  1. 工作流程(以缺页异常为例)

  2. CPU访问未映射的虚拟地址,触发缺页中断。

  3. 操作系统检查PGD项:

    • 若二级页表不存在 → 分配物理页框,初始化PTE。
    • 若二级页表存在 → 直接添加新PTE映射。
  4. 恢复进程执行,重新访问地址。

  5. 优缺点
    | 优点 | 缺点 |
    |-------------------------|------------------------|
    | 内存占用大幅降低(动态分配) | 地址转换需两次内存访问 |
    | 支持稀疏地址空间 | 实现复杂度增加 |
    | 物理内存可离散分配 | 需TLB缓存降低查询延迟 |


四、关键概念对比总结

特性一级页表二级页表
页表结构单层连续数组两层索引(PGD+PTE)
内存分配启动时固定分配4MBPGD固定4KB,PTE按需分配
物理内存要求需连续大块内存可离散分配小页框
适用场景理论模型/极小内存系统现代32位系统标准方案

操作系统必须在进程初始化时‌一次性分配完整的顶层页表空间,而且顶层只有一页

五、演进意义
二级页表通过空间换时间的权衡,解决了单级页表的内存膨胀问题。其分层设计是支持64位大地址空间(如三级/四级页表)的基础,成为现代操作系统的核心架构。理解其原理,是深入内核内存管理的必经之路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:51:41

Java中读写锁的应用场景是什么?

大家好,我是锋哥。今天分享关于【Java中读写锁的应用场景是什么?】面试题。希望对大家有帮助;Java中读写锁的应用场景是什么?它能显著提高并发吞吐量,因为它允许:多个线程同时持有读锁(读-读并发…

作者头像 李华
网站建设 2026/6/9 13:33:37

AI模型增强技术大比拼:RAG与微调优劣势全解析,收藏备用

本文深入对比了NLP领域两种主流模型增强技术:RAG与微调。RAG通过外部知识库动态检索信息,适应性强但计算开销大;微调则通过特定数据集优化模型参数,任务专精度高但灵活性较低。文章详细分析了两者在准确性、适应性、资源消耗和推理…

作者头像 李华
网站建设 2026/6/13 12:08:07

NAT 超详细详解

一、NAT 基本概念1.1 什么是 NAT?NAT(Network Address Translation,网络地址转换) 就像是一个大楼的总机接线员:text想象一栋大楼: - 内部:100个房间(内网设备)&#xff…

作者头像 李华
网站建设 2026/6/13 12:17:04

学霸同款8个AI论文网站,助你轻松搞定本科毕业论文!

学霸同款8个AI论文网站,助你轻松搞定本科毕业论文! AI 工具助力论文写作,轻松应对学术挑战 随着人工智能技术的不断发展,越来越多的本科生开始借助 AI 工具来提升论文写作效率。尤其是在面对繁重的毕业论文任务时,这…

作者头像 李华
网站建设 2026/6/14 0:30:32

Thinkphp和Laravel大健康养老院公寓管理系统_to14d_

目录 功能模块对比性能与扩展性开发效率与学习曲线安全性部署与维护适用场景建议 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 功能模块对比 ThinkPHP和Laravel均可用于开发大健康养老院公寓管理系统,但两者在架构和功能实现上有所…

作者头像 李华