TLB是否会导致内存中的页面错误?

时间:2011-06-18 20:46:11

标签: memory-management operating-system kernel cpu-architecture tlb

在加州大学伯克利分校的John Kubiatowicz(Kuby教授)关于操作系统的视频讲座中,他提到TLB命中并不意味着相应的页面在主内存中。页面错误仍然可能发生 从技术上讲,TLB是页表条目的缓存,因为所有页表条目都没有在主内存中提供相应的页面。 TLB也是如此。 TLB命中可能会导致页面错误。

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

那么有人可以代表kuby教授的主张的正确性并指出一个案例,而不是TLB命中(在TLB中找到相应虚拟地址的翻译物理地址),可能会发生页面错误吗?

3 个答案:

答案 0 :(得分:12)

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

e.g。你想写入写保护的内存。 TLB存在,它是一个命中,地址被翻译。但是在访问时你得到一个陷阱,因为你试图写入只读的内存

答案 1 :(得分:2)

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

答案 2 :(得分:-2)

帕特森说:“如果内存中没有页面,则TLB中无法翻译”[计算机组织与设计,第4版修订,第507页]