当前位置: 首页 > ops >正文

[MMU] Table walk flow详解

Table walk flow详解

       摘要:我将基于计算机体系结构(特别是 x86-64 架构中的分页机制)来解释table walk flow,因为4级页表(4-level page table)最常见于 Intel/AMD 的64位模式(也称为 IA-32e 或 long mode)。如果您指的是其他架构(如 ARM64 的4级页表),请提供更多细节,我可以调整。

       我会先简要介绍4级页表的概念,然后详细描述 table walk flow(页表遍历流程)。最后我会解释如何基于 PDE 的 base address 计算下一个页表的物理地址或最终的物理页帧地址。

       响应基于标准的 x86-64 分页机制,使用4KB 页大小(最常见)。如果涉及更大页(如2MB或1GB),流程会略有不同,我会注明。

一、4级页表的简介

       在 x86-64 架构中,虚拟地址(VA, Virtual Address)到物理地址(PA, Physical Address)的转换使用多级页表来实现内存分页和保护。4级页表结构如下(从最高级到最低级):

  • PML4 (Page Map Level 4 Table):第1级,顶级页表。
  • PDP (Page Directory Pointer Table):第2级。
  • PD (Page Directory Table):第3级。
  • PT (Page Table):第4级,最终指向物理页帧。

       每个表包含512个条目(entries),每个条目64位(8字节)。虚拟地址被拆分成索引位,用于逐级查找。

  • 虚拟地址分解(48位有效VA,在64位地址空间中;假设4KB页):

    • Bits 47-39: PML4 索引(9位,512 entries)。
    • Bits 38-30: PDP 索引(9位)。
    • Bits 29-21: PD 索引(9位)。
    • Bits 20-12: PT 索引(9位)。
    • Bits 11-0: 页内偏移(12位,4KB页)。
  • CR3 寄存器:存储 PML4 表的物理基地址(base address),这是 table w

http://www.xdnf.cn/news/16179.html

相关文章:

  • IAR编辑器如何让左侧的工具栏显示出来?
  • MCP工具开发实战:打造智能体的“超能力“
  • GaussDB 逻辑备份实操
  • windows11安装wsl装Ubuntu到D盘及可视化页面,安装docker及宝塔面板
  • 初识opencv03——图像预处理2
  • Day 20:奇异值SVD分解
  • Python Day15 面向对象核心特性笔记 及 例题分析
  • 数组toString方法及类型检测修复方案
  • Linux 内核基础统简全解:Kbuild、内存分配和地址映射
  • 【推荐100个unity插件】Animator 的替代品?—— Animancer Pro插件的使用介绍
  • 同花顺前端潜在面试题目与答案
  • 星慈光编程虫2号小车讲解第一篇--向前向后
  • 力扣1287:有序数组中出现次数超过25%的元素
  • 背包DP之分组背包
  • 嵌入式通信知识串讲:从同步 / 异步传输到 UART 协议 STM32F103 硬件解析
  • ​Excel——SUMPRODUCT 函数
  • 基于CloudBase+React+CodeBudddy的云上智能睡眠应用开发实践
  • PCL 间接平差拟合球
  • 基于20和28 nm FPGAs的实现多通道、低非线性时间到数字转换器
  • 变量和函数底层工作原理
  • T-RO顶刊|单视角“找相似”,大阪大学提出新型点云描述符(C-FPFH),杂乱场景一抓一个准!
  • 0724 双向链表
  • C语言(十)
  • 移动端自动化Appium框架
  • 清除浮动以及原理
  • 2025年6月GESP(C++六级):学习小组
  • wiz2025 挑战赛从 SpringActuator 泄露到 s3 敏感文件获取全解析
  • Linux驱动19 --- FFMPEG
  • 7.3.2 内核内存管理运行机制
  • Lua(迭代器)