我试图在脑海中整理一些有关 Linux 内存管理的概念,并有以下问题:
在 Linux 中,TLB 未命中是由内核代码处理的吗?即使错过也是简单的查找在页表中查看是否存在映射(页遍历)[1]?我的意思是,所谓的页面行走由内核代码执行?
是不是所谓的页面行走(对某种 TLB 未命中的响应)是否被认为是软页面错误?
答案1
这取决于处理器。在 x86 架构中,TLB 未命中由硬件处理,因此对内核来说是透明的。内核代码处理 TLB 的唯一时间是当 TLB 的内容将被丢弃(TLB 刷新)时。
“软页错误”通常是指RAM中存在内存页,但MMU不知道这一情况,即页表中没有该页框的条目。