首页
社区
课程
招聘
[推荐]冒昧的问一个关于内存分页的问题。见笑。
发表于: 2012-6-15 16:02 5299

[推荐]冒昧的问一个关于内存分页的问题。见笑。

2012-6-15 16:02
5299
在网上看了很多资料,一共有两种。
第一种是说分页内存是指可以被交换到磁盘的内存,未分页内存是不能被交换的内存。只能在内存中的。
第二种是说未分页内存是从逻辑地址转成线性地址,而线性地址就是物理地址。
那么疑问来了,究竟未分页内存有没有是被"映射"到物理内存呢?物理内存又是否是按页存放的呢?按它的意思就是虚拟地址就是物理地址,那又产生一个疑问,假设驱动A中0x01123456是未分页内存,是否代表这个内存的物理地址也是0x01123456?
那么切换进程后呢?这块未分页内存是否还在?
另外我有个朋友说我的驱动暴搜ntoskrnl取未导出函数蓝屏的原因是访问到了未分页内存,究竟驱动访问未分页内存会不会蓝呢?又有一个论坛里的人说了,当INIT段执行完后将会被卸载,此时的地址是无效的,所以导致蓝屏,那么这里的无效究竟是什么?是这块内存没有对应的物理页面吗?又绕回某些文章说当地址没有对应物理页面的时候将会产生缺页中断,但是不会蓝屏,只会等待物理页面被装入。那么究竟……无效的内存代表什么????present位为0吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
被自己整的一头雾水,分页内存的访问究竟什么时候会蓝?(排除中断级别的情况下)。
假设某内存的present为0,那么究竟是代表这块分页内存不存在,还是这块内存的物理页面被切换出去了?访问present==0的页面究竟会不会蓝呢?
当某个段从内存中卸载后是否代表这块内存不映射到任何位置,是一块无用的内存?
那是否代表非分页内存并没有PDE和PTE?
2012-6-15 16:11
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
另外论坛里看到一位大牛说只要讲Ntoskrnl进行文件映射,进行暴搜的时候就不会出现蓝屏的问题了,
那么内存映射后的新内存不也没有INIT节么?。。。。
2012-6-15 16:19
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
另外论坛里看到一位大牛说只要讲Ntoskrnl进行文件映射,进行暴搜的时候就不会出现蓝屏的问题了,
那么内存映射后的新内存不也没有INIT节么?。。。。INIT位置的地址不还是……无效的么?难道是映射文件了?可映射了文件是否代表需要对新内存进行重定位。。。。
2012-6-15 16:21
0
雪    币: 8720
活跃值: (18470)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
不太清楚,访问present==0的页面应该不会蓝,这个页面好像是系统把它放到虚拟内存里去了(就是pagefile.sys),然后访问到它时会触发缺页中断,系统就会从磁盘虚拟内存文件里读进内存,不知说得对不对
2012-6-15 17:15
0
雪    币: 8720
活跃值: (18470)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
刚才搜了一下,发现有个贴和你的情况类似,请参考
http://bbs.pediy.com/showthread.php?t=107986
2012-6-15 17:42
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你说的是非分页内存吧?我理解的非分页内存就是不能被交换到页面文件中的页面,而你所谓的访问会蓝屏有最少两种情况:1.访问地址所在页面没有实际映射到的物理内存;2.访问地址的代码所在的IRQL级别过高导致页面交换无法完成
2012-6-15 21:57
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
第一种。ntoskrnl的INIT节初始化后卸载。
2012-6-15 22:26
0
游客
登录 | 注册 方可回帖
返回
//