X86 访问超出可用内存的地址

X86 访问超出可用内存的地址,x86,paging,computer-architecture,mmu,X86,Paging,Computer Architecture,Mmu,如果您有一个页面表条目,它将页面映射到PPN,而PPN超出了机器上的可用RAM,会发生什么情况。 它是页面错误还是忽略计算地址的MSB?还是别的什么?我以前玩Linux内核时也做过类似的事情,当然是无意的。无论如何,尝试访问超出最大地址的物理页会导致内核死机 更具体地说,如果您的虚拟页在主内存中不可用,需要从硬盘中取出(换入),则会出现页面错误。或者,如果它在主内存中可用,但具有不同的访问权限(在主内存中可用于读取,而您的请求需要写入)。在这两种情况下,操作系统都会通过在页面中交换来处理该请求,

如果您有一个页面表条目,它将页面映射到PPN,而PPN超出了机器上的可用RAM,会发生什么情况。
它是页面错误还是忽略计算地址的MSB?还是别的什么?

我以前玩Linux内核时也做过类似的事情,当然是无意的。无论如何,尝试访问超出最大地址的物理页会导致内核死机

更具体地说,如果您的虚拟页在主内存中不可用,需要从硬盘中取出(换入),则会出现页面错误。或者,如果它在主内存中可用,但具有不同的访问权限(在主内存中可用于读取,而您的请求需要写入)。在这两种情况下,操作系统都会通过在页面中交换来处理该请求,允许您使用分段错误(臭名昭著的
分段错误(内核转储)
)访问或终止请求进程。在启动时,内核创建一个开始和结束PFN(页面帧编号),并填充页面表,因此基本上不可能发生这种情况

如果出于某种原因(除非您操作了内核,否则不会发生这种情况),您的页面表包含无效的PFN或PPN,则会导致内核死机并产生如下结果:

BUG: unable to handle kernel paging request at ffffea0df0668018
我不知道其他操作系统,但我想也是一样的。但这也不应该发生,除非内核有问题