vanmin
驱动牛犊
驱动牛犊
  • 注册日期2006-04-20
  • 最后登录2009-03-31
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望33点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
阅读:1486回复:4

[求助] 关于虚拟内存

楼主#
更多 发布于:2007-07-07 20:42
请教大侠.winnt中,如果一个应用程序(ring3)请求的一块内存不在内存中是不是就会触发0x0E号中断?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-07-09 12:20
是.看看intel cpu的手册,这个和os无关(不管是windows,还是linux),只要开启了分页,访问的内存地址,(对于4k的页,有两级页表),先查找pgd,如果对映的表项,Present位为0,就会产产生0e异常,如果有效,再查第二级页表,如果对应的表项,Present为0,同样产生0e异常
vanmin
驱动牛犊
驱动牛犊
  • 注册日期2006-04-20
  • 最后登录2009-03-31
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望33点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-09 14:04
引用第1楼zhaock于2007-07-09 12:20发表的  :
是.看看intel cpu的手册,这个和os无关(不管是windows,还是linux),只要开启了分页,访问的内存地址,(对于4k的页,有两级页表),先查找pgd,如果对映的表项,Present位为0,就会产产生0e异常,如果有效,再查第二级页表,如果对应的表项,Present为0,同样产生0e异常


谢谢版主,刚开始,我看了intel那本书觉得可以触发而且也知道是平台无关的.但是网上有篇文章说ring3下页异常不会#PF于是就怀疑了.但是今天看来internals那本书.也说可以触发.
还有问题是.怎样在处理中断的时候可以从ring0转到我们自己的ring3地址继续处理?不用seh?
版主可以看看么?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-07-12 14:50
那需要安排一个user apc了.你要实现什么功能,有必要这么做吗?
vanmin
驱动牛犊
驱动牛犊
  • 注册日期2006-04-20
  • 最后登录2009-03-31
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望33点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-17 13:39
引用第3楼zhaock于2007-07-12 14:50发表的  :
那需要安排一个user apc了.你要实现什么功能,有必要这么做吗?

谢谢版主.我计划用iretd了.貌似还是可以的.
游客

返回顶部