阅读:1486回复:4
[求助] 关于虚拟内存
请教大侠.winnt中,如果一个应用程序(ring3)请求的一块内存不在内存中是不是就会触发0x0E号中断?
|
|
沙发#
发布于:2007-07-09 12:20
是.看看intel cpu的手册,这个和os无关(不管是windows,还是linux),只要开启了分页,访问的内存地址,(对于4k的页,有两级页表),先查找pgd,如果对映的表项,Present位为0,就会产产生0e异常,如果有效,再查第二级页表,如果对应的表项,Present为0,同样产生0e异常
|
|
板凳#
发布于:2007-07-09 14:04
引用第1楼zhaock于2007-07-09 12:20发表的 : 谢谢版主,刚开始,我看了intel那本书觉得可以触发而且也知道是平台无关的.但是网上有篇文章说ring3下页异常不会#PF于是就怀疑了.但是今天看来internals那本书.也说可以触发. 还有问题是.怎样在处理中断的时候可以从ring0转到我们自己的ring3地址继续处理?不用seh? 版主可以看看么? |
|
地板#
发布于:2007-07-12 14:50
那需要安排一个user apc了.你要实现什么功能,有必要这么做吗?
|
|
地下室#
发布于:2007-07-17 13:39
引用第3楼zhaock于2007-07-12 14:50发表的 : 谢谢版主.我计划用iretd了.貌似还是可以的. |
|