如果我们不使用虚拟内存,是否会发生页面错误?

Can page fault occur if we don't use virtual memory?

我正在阅读有关虚拟内存和页面错误的内容。据我了解,当页面 CPU 正在寻找的页面不在主内存中时,就会发生页面错误。我有一个疑问,如果我们不使用虚拟内存,会不会出现页面错误?

Can page fault occur if we don't use virtual memory?

这取决于你如何定义“虚拟内存”。

在某些情况下,“虚拟内存”仅表示“使用 CPU 的 MMU/paging”。在这种情况下,不,如果您不使用 CPU 的 MMU/paging.

就不会出现页面错误

在某些情况下,“虚拟内存”意味着使用一些技巧来改善 RAM 消耗(例如交换 space、内存映射文件、“写入时复制”等)。在这种情况下,可以不使用任何技巧,但仍然使用 CPU 的 MMU/paging(例如 80x86 上的 64 位环境,如 UEFI,其中物理内存是标识映射的,因此两者之间没有区别虚拟地址和物理地址)。在这种情况下,即使您没有使用任何技巧,也可能会出现页面错误。