凡亿教育-小文
凡事用心,一起进步
打开APP
公司名片
凡亿课堂 | 面试指南
当前位置: 首页 面试指南
嵌入式Linux面试:虚拟地址怎么变成物理地址?页表、mmap和Page Fault要串起来回答
浏览量:81
2026-10-20 14:04:41

驱动里看到的是内核虚拟地址,用户程序看到的是用户虚拟地址,DMA设备又可能使用总线地址。面试官问虚拟内存时,重点不是背地址范围,而是理解CPU通过页表完成地址翻译,以及“页当前不存在”时为什么会触发Page Fault。

核心链路

虚拟地址 → MMU/TLB → 页表 → 物理页;映射不存在或权限不满足时进入异常处理。

分页内存地址转换示意图,展示逻辑/虚拟地址经过页表映射为物理地址的过程

三个概念要连起来讲

页表做什么

虚拟地址被拆成页号和页内偏移,页表把虚拟页映射到物理页。现代CPU通常还有TLB缓存常用映射。

Page Fault不等于程序崩溃

访问一个合法但尚未建立物理映射的页面时,也可能触发缺页异常,由内核分配/装入页面后继续执行。非法访问则可能最终形成SIGSEGV。

mmap在驱动里的意义

驱动可以把设备内存或特定物理页映射到用户空间,但必须控制范围、缓存属性、权限和生命周期。

面试参考回答

我会先说明进程使用的是虚拟地址,CPU的MMU通过页表把它翻译成物理地址,TLB用来缓存常用转换。Page Fault本身只是地址翻译遇到异常条件,不一定是程序错误;匿名内存首次访问、按需加载文件都可能合法触发缺页。驱动做mmap时,则需要把指定物理页面建立到用户进程的虚拟地址空间,并正确设置页保护和缓存属性。对于DMA地址,我不会简单等同于CPU物理地址,还要看平台的DMA/IOMMU模型。

追问方向

  • Page Fault和Segmentation Fault是什么关系?

  • TLB为什么能提高地址翻译效率?

  • 驱动mmap设备寄存器时为什么要注意缓存属性?

  • DMA地址为什么不一定等于CPU物理地址?

容易混淆
  • 把虚拟地址理解成“假的地址”,但说不出页表怎么映射。

  • 认为出现Page Fault就一定是崩溃。

  • 把virt_to_phys、DMA地址和用户态地址随意互换。

凡亿电子工程师面试平台 · 面试回答建议结合本人真实项目经历和具体器件/规范展开。


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。 侵权投诉

相关文章

电子工程师谈薪与offer选择怎么决策?薪资结构怎么比较?求职面试策略

2026-09-16 10:02:38

电子工程师职业发展路线有哪些方向?面试职业规划题

2026-08-10 11:39:20

PCB仿真面试:模型为什么要还原焊盘、过孔和走线几何?寄生参数会怎样影响结果

2026-10-23 14:08:33

电子工程师面试作品集怎么做?3—5个项目、证据链、保密和现场讲解方法

2026-10-15 21:17:44

一分二功分器为什么在两路输出之间接100Ω?读懂Wilkinson隔离电阻

2026-10-29 22:31:02