阅读:2368回复:22
请教在win98下驻留内存的方法?
?
|
|
|
沙发#
发布于:2002-10-21 17:25
驱动本身就是驻留在内存中的
|
|
|
板凳#
发布于:2002-10-21 17:43
当然是在用户态分配一块内存,而后,要让其常驻系统当中,即不被移动或者交换到页面文件中去。
|
|
|
地板#
发布于:2002-10-21 17:44
病毒?去我签名里的论坛看看
|
|
|
地下室#
发布于:2002-10-22 09:14
老猫,你的论坛去过了,并且将你的内容给搜索了以下,我觉得相关的帖子讲的不是很理想,所以把这个问题搬到这来了。
|
|
|
5楼#
发布于:2002-10-22 09:34
当然是在用户态分配一块内存,而后,要让其常驻系统当中,即不被移动或者交换到页面文件中去。 globallock |
|
|
6楼#
发布于:2002-10-22 09:40
应用中用VirtualLock锁定的页面其实并不是真的锁定了,它仍旧参与页面调度,在一定条件下(比如工作集中所有线程都挂起且页面紧缺)它会被换出。
相对应的,globallock 锁也是一样。 |
|
|
7楼#
发布于:2002-10-22 10:56
或许你可增加一个调用门,从Ring3中直接调用Ring0的函数来分配内存,然后使用VirtualProtectEx等函数(或者别的办法)修改分配的内存属性,使用另外的进程写入代码,这样或许可以
|
|
|
8楼#
发布于:2002-10-22 11:13
只能在RING0 级,通过调用内存分配函数分配非分页内存,而后再进行处理,没有其他方法吗?
|
|
|
9楼#
发布于:2002-10-22 19:17
应该是的。
|
|
10楼#
发布于:2002-10-23 08:42
晕,在WIN98下就没有将分页内存变成非分页内存的方法吗?
|
|
|
11楼#
发布于:2002-10-23 08:43
晕,在WIN98下,用户程序就没有将分页内存变成非分页内存的方法吗?
|
|
|
12楼#
发布于:2002-10-23 10:20
晕,在WIN98下,用户程序就没有将分页内存变成非分页内存的方法吗? 愚以为,所谓的未分页内存,只是永远不会交换到硬盘上的东西,其实它也是分页的。X86 CPU进入分页保护模式后,所有地址都是分页的了,不可能真有未分页的出现。 |
|
|
13楼#
发布于:2002-10-23 12:54
这样说吧,既然都在分页机制管辖下,那我们如何让某一段内存永远不被交换到磁盘上去吗?而不要象VirtualLock那样,在紧急时刻,又参与了页面交换。
其实,我就想:把用户态分配的内存变成中断处理程序占用的那种类型的内存。而不要出现页面调度失败。 |
|
|
14楼#
发布于:2002-10-23 16:57
?
|
|
|
15楼#
发布于:2002-10-24 10:14
我只知道VirtualLock可以
|
|
|
16楼#
发布于:2002-10-24 10:55
是的,花猫。我见到的在用户态的也只有他,但是,书上,确真的加上了这么一句话:“应用中用VirtualLock锁定的页面其实并不是真的锁定了,它仍旧参与页面调度,在一定条件下(比如工作集中所有线程都挂起且页面紧缺)它会被换出”。我有这本书:微软授权清华发行的,书名我一时记不着,是翻译的。所以,我想,要是把他用在特定的地方,例如,锁定接管IRQ的中断处理程序中,故总有一刻,我的WIN98系统要OVER。
当然,要是能够进入ring0 调用相关服务能够实现尚书功能的话,也行呀。只要确保,程序总是在物理内存中,且不被移动。 我想肯定能实现的,猜看,win98的各种驱动不都运行的好好的吗? [编辑 - 10/24/02 by guoj] |
|
|
17楼#
发布于:2002-10-24 11:00
进入ring0可以分配未分页内存,但如果VirtualLock都不行,我对这种未分页的可靠度感到怀疑。
我想,“在一定条件下”的意思是一般不会发生这种情况,除非内存很小,资源占用又大的情况下可能出现,但那样,怪用户机器不好,不怪你。 |
|
|
18楼#
发布于:2002-10-24 11:14
你前面不是说,未分页内存也可以参与交换吗:“愚以为,所谓的未分页内存,只是永远不会交换到硬盘上的东西,其实它也是分页的”。
所以,我本来是想,VirtualLock不中用的话,就直接在ring0下分配非分页内存,而后进行处理,但是听你一席话,我就觉得有点晕。现在不知如何下手,只能用时间去检验实践了。 [编辑 - 10/24/02 by guoj] |
|
|
19楼#
发布于:2002-10-24 11:21
你前面不是说,未分页内存也可以参与交换吗:“愚以为,所谓的未分页内存,只是永远不会交换到硬盘上的东西,其实它也是分页的”。 分页不等于一定参与页面调度,被锁定的或者号称“未分页”的,其实在X86眼里是分页的,但Win不会把它换到硬盘上而已,除非意外情况,比如你说的“一定条件”。 我想,在ring0里分配未分页内存比较好,万一出现“一定条件”,估计Win会优先把VirtualLock的内存换出去。 你自己实践一下吧。 PS:如果你还想给分,可以另开一贴。 :D :D :D |
|
|
上一页
下一页