操作系统-TLB命中是否会导致内存中的页面故障



在网络上John Kubiatowicz(Kuby教授)的UC Berkley操作系统视频讲座中,他提到TLB命中并不意味着相应的页面在主存中。页面错误仍然可能发生
从技术上讲,TLB是页表条目的缓存,因为所有页表条目在主存中都没有相应的页可用。TLB也是如此。TLB命中可能导致页面错误。

但根据教科书中给出的算法,我找不到这样的案例。在TLB未命中内核上,请参阅页面表并更新TLB缓存以进行适当的地址转换。下一次TLB命中不会导致页面错误。当内核交换页面时,它会更新该页面表项的适当位,并使相应的TLB无效,因此在页面加载到主存中之前,下次不会有TLB命中。

那么,有人能证明库比教授的说法是正确的吗?并指出一种情况,即可能发生页面错误,而不是TLB命中(TLB中对应虚拟地址的转换物理地址)?

一个例子是,如果内存访问与允许的不同。

例如,您想写入受写保护的内存。TLB存在,它是命中的,地址被转换。但在访问时,您会遇到一个陷阱,因为您试图写入只读的内存

页面错误并不意味着内存中缺少页面。页面可能仍然存在并且是脏的。这也是一个页面错误。一般来说,页面错误指的是所获得的翻译无法有效使用的情况。它可能是丢失的页面、脏页面或访问权限不匹配。因此,TLB命中仍然可能导致页面错误。

patterson说:"如果内存中没有页面,就不能在TLB中进行翻译"[计算机组织与设计,第4版修订,第507页]

最新更新