memory-management - TLB 命中会导致内存缺页吗?

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

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

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

那么有人可以支持 kuby 教授声明的正确性,并指出一种情况,而不是 TLB 命中(在 TLB 中找到的相应虚拟地址的转换物理地址),可能会发生页面错误?

最佳答案

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

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

关于memory-management - TLB 命中会导致内存缺页吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398811/

相关文章:

algorithm - 对 FIFO 页替换算法的实际示例感到困惑?

linux - 操作系统如何知道物理内存的实际大小?

c - 代码何时依赖于平台?

linux - 这些磁盘读取从哪里来?

c - 如何从WinCE 5.0的调试串口读取数据?

C++ -- 智能指针和自定义内存分配困境

windows - 如何使用 Perl 或任何其他语言找到 Windows x86-32 位上的确切物理内存量?

c++ - 类管理器-内存池?

python - 导入操作系统在 Linux 中不起作用

linux - Linux Kernel是否可以被认为是一个进程