【发布时间】:2019-09-21 14:37:42
【问题描述】:
当我们处于用户模式并发生页面错误时,我有点困惑。
IIRC,当 TLB 尝试将我的(用户空间)虚拟地址映射到物理地址并且失败时,将生成页面错误。
然后它会生成一个将由操作系统同步处理的异常。但现在的问题是:这个异常处理程序代码的地址及其相关数据很可能也不在 TLB 中!
这是递归的还是这个内核内存地址范围受不同规则的约束(例如,虚拟/物理内存之间的自动映射以避免需要使用 TLB?)
谢谢!
【问题讨论】:
-
我认为你误解了TLB和页面错误之间的关系。在你说“TLB”的任何地方,你都应该说“页表[用于进程]”。 TLB 只是页表的缓存 - TLB 中的缺失不会导致页面错误(它会导致“页面遍历”),但页表中的缺失会。
标签: linux operating-system cpu-architecture tlb page-fault