首页 文章

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

提问于
浏览
12

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

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

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

3 回答

  • -2

    一个例子是如果存储器访问与允许的存储器访问不同 .

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

  • 2

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

  • 12

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

相关问题