ven*_*s.w 3 x86 operating-system kernel exception-handling exception
众所周知,当访问存储器中不存在的页面可能导致页面错误时,写入只读页面也会导致页面错误?如何在异常处理程序中识别两种类型的页面错误?
在调用页面错误处理程序之前,您将读取CPU放置在堆栈上的异常错误代码.此错误代码包含5位,您对这4位感兴趣:
如果您得到P = 0,则该页面不存在.
如果您获得P = 1,则权限不足以访问该页面.U/S告诉您它是否在内核或应用程序中.I/D告诉您是否因为代码指令读取(读/写数据).W/R告诉您是否正在读取或写入无法完成的操作.
这将在本Interrupt 14—Page-Fault Exception (#PF)节中描述Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3: System Programming Guide.