0

I have very simple question. I'm not able to find the answer on my own as I don't have any environment to test it.

If I access 4 bytes on the edge of page, what will happen?

mov eax, dword [0x100000+4095]

What will be the upper three bytes when I have access to page on 0x101000 and when I don't?

Please help.

4

1 回答 1

1

发生什么主要取决于您的操作系统。如果你有正常的内存访问,那么什么都不会发生。该值只是读取当时存在的任何内容。如果不允许访问该页面,那么您的程序将生成页面错误,操作系统必须处理该错误。

如果该页面在磁盘上,因为它已被换出,那么操作系统将加载该页面,并从中断处恢复您的程序。您的程序不会注意到这一点。如果页面无效,则操作系统将引发异常,并且取决于操作系统,您可能能够捕获它,否则您的程序将崩溃。

如果访问是在内核级别完成的并且无法解决,您的操作系统很可能会因内核崩溃而崩溃,或者如果编写得很好,它可能只是禁用驱动程序,从而导致它。

于 2013-08-26T11:46:02.307 回答