阅读:1772回复:19
关于分页的问题!
问一个问题:默认情况下,编译器会把Data,Stack,heap,Code Sections的属性定义成\"pageable\" or \"non-pageable\"?????
比如我直接定义一些局部变量如下: NTSTAS Driverentry(....) { LARGE_INTEGER value, increment; KSPIN_LOCK spinlock; } 以上的局部变量是在分页还是非分页内存块中? |
|
沙发#
发布于:2002-11-06 16:53
分在堆栈中
传说堆栈是未分页的。 |
|
|
板凳#
发布于:2002-11-06 16:58
我描述的变量应该被编译器分配到栈中,你的意思是Stack Section是非分页的?,还有其他的Sections呢,比如Data section code section??? :( :( :(
|
|
地板#
发布于:2002-11-06 17:03
没有Stack Section
堆栈就是系统分配的一块内存而已,在驱动文件里没这东西。 |
|
|
地下室#
发布于:2002-11-06 17:12
确实在.sys文件中没有stack section,但是在用户模式进程中有这个Section(其实就是一片1M的内存空间)
不讨论这个问题了,重问: 我问的是: 1,stack and heap都Pageable? 2,data section,code section,and other sections都pageable?? :) |
|
5楼#
发布于:2002-11-06 17:25
确实在.sys文件中没有stack section,但是在用户模式进程中有这个Section(其实就是一片1M的内存空间) 用户模式也没这个Section!!!1M空间确实有!!! 1,不是,是nonpaged 2,不懂 3,给分?谢谢 |
|
|
6楼#
发布于:2002-11-06 17:39
谢谢花猫,呵呵给你分!
你不是搞Virus的吗,怎么对PE和进程空间的概念如此模糊? 建议你好好的学习一下用户模式的核心编程! 我认为最好的教材: Advance windows windows system secret 后者里面有个看应用程序进程空间的例子,一般进程里面有操作系统分配1m的堆空间(编译可选),加深一下基础!hehe ! :) :) |
|
7楼#
发布于:2002-11-06 17:47
谢谢花猫,呵呵给你分! faint! 你不是说驱动吗? 如果是用户模式,所有的Section都是分页的!!! PE头里这四个值规定了堆和栈的大小,你自己看吧 Offset : 00000060 SizeOfStackReserve : 00100000 Offset : 00000064 SizeOfStackCommit : 00004000 Offset : 00000068 SizeOfHeapReserve : 00100000 Offset : 0000006C SizeOfHeapCommit : 00001000 你说的Section是指什么???难道不是PE的Section??? PE文件当然没有堆栈这个Section。 我就不明白,你既然看了那两部书,为何连PE里到底有什么Section都不知道? 气死我了!!!!!!!!!!!!!!!! 你没说明白,反倒数落我一顿 :mad: :mad: :mad: [编辑 - 11/6/02 by Koms Bomb] |
|
|
8楼#
发布于:2002-11-06 17:49
哼!
:mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: :mad: |
|
|
9楼#
发布于:2002-11-06 18:18
本站有我写的一个工具PEViewer,可以查看PE文件格式。
你down下去看看,是否有PE文件有个\"stack section\" |
|
|
10楼#
发布于:2002-11-06 18:43
KSPIN_LOCK spinlock 肯定是非分页的
|
|
11楼#
发布于:2002-11-07 08:44
谢谢花猫,不过你说的不是全对的:
1,首先我提到了进程的概念,我说的Stack section指的是进程里的Stack section,不是PE里的Section。 2,我用PEditor看了一下.sys文件,发现.text(.Code),.data.rdata是non-pageable的,而.rscs,.reloc是pageable的。主要是看PE文件头中的character的flag有没有0x08000000标志! 不过还是谢谢你告诉我这么多。关于我提到的两本书有时间你看看吧,都是写基础教材,不过很有意义!^_^ :D :D :D :D :P :P :P :P |
|
12楼#
发布于:2002-11-07 09:50
谢谢花猫,不过你说的不是全对的: 你有说你说的stack section是指进程的了吗?你自己没说清楚,怎能怪我?提到section,我第一个想到的就是PE。 你一会说驱动一会说用户模式,我不知道你到底在说什么,感觉你逻辑有些混乱。 |
|
|
13楼#
发布于:2002-11-07 09:51
你提到的两本书,我早就概览过。
怎么了??? :mad: :mad: :mad: |
|
|
14楼#
发布于:2002-11-07 10:54
不用生气,你个大花猫! :D :D :D
确实是我开始时表达的有问题,关于书我只是给你提一个建议而已! 还有我没有一会说驱动一会说用户模式!我说了进程的概念可能让你这么想了,可能是我表达能力太差的原因。 我是想说.sys是PE文件,PE LOADER在load .sys文件时,得为.sys文件分配了一段堆栈,我于是就把他分配的这段堆栈空间叫做了heap section。 我不是逻辑混乱,而是表达不清!还有我觉得你这人还行!呵呵! :D :D :D |
|
15楼#
发布于:2002-11-07 11:51
不用生气,你个大花猫! :D :D :D faint!我这么暴躁,你还觉得我还行,你狠 :D 只是你说我“对PE和进程空间的概念如此模糊”,让我非常不爽,我不喜欢被人冤枉。 我记得驱动里堆栈是未分页的。 |
|
|
16楼#
发布于:2002-11-07 14:57
请问这两本书是英文的?哪有卖?谢谢
|
|
17楼#
发布于:2002-11-07 19:22
对不住花帽,说话过于冒失了!
书都有汉语版的: 前者叫做“windows 核心编程”,那里都有“电子的,和书” 后者叫做“windows系统编程大奥秘”,侯捷网站免费下载 也给我点分吧!呵呵! :) |
|
18楼#
发布于:2002-11-08 09:30
对不住花帽,说话过于冒失了! “核心”还不错,虽不是真的核心,但看了还是挺有帮助的。 “奥秘”则未必很大,而且是95的 |
|
|
19楼#
发布于:2002-11-08 09:57
哎~!~!~!
猫咪的脾气越来越坏了! :( |
|
|