有段时间没有写PDA相关文章了,今天索性来系统性介绍下什么是Pagepool。
前阵子Hermes Fan om-by在XDA上发布了他编写的pagepool changer工具,可以不用通过修改十六进制代码就可以很容易更改ROM Pagepool大小。该免费工具可直接修改RUU_signed.nbh或OS.nb的Pagpool,可设置的Pagepool大小范围为1Mb~16Mb。现在网上上发布的ROM大都标明了Pagepool的大小4Mb或8Mb,但什么是Pagepool,希望这篇文章能帮您解开这个惑。
1.什么是pagepool?
首先需要澄清下,实际上并不存在pagepool实体。Pagepool是windows Mobile系统内置的一个内存管理机制。如果ROM中存在pagepool的话,那么系统会预先将读取的数据缓存在Pagepool中,且系统可以释放已加载在pagepool但没有使用代码。而Pagepool大小代表了系统一次可加载多少程序代码在RAM里面。也就是说系统可以加载程序代码大小是受Pagepool大小约束的。有点类似与Win系统中的Page file(页面缓存)一样。但是如果ROM里面没有Pagepool的话,系统将直接加载代码到RAM,这样会提高系统性能。
众所周知,PPC上的存储分为ROM和RAM。平常大家所刷的WM6.0 ROM指的就是这部分ROM。Hermes系列的ROM大小为128Mb。RAM就是程序运行的内存,一般为64Mb。如果增加了Pagepool大小,会相应减少程序用RAM大小。同样,减少pagepool,会释放出相应空间给程序用RAM。
2.Pagepool大小对系统性能的影响?
是否pagepool越大,系统运行速度越高呢?也有网友说,如果将pagepool容量设置为0Mb,即取消pagepool,代码直接被加载到RAM,这样会提高系统运行速度。但个人认为此法不妥当,不可否认没有Pagepool,代码直接加载到RAM的做法会提高系统运行速度,但同样可能会减低系统的稳定性。因为一旦程序出错而又系统无法释放相应代码时,就容易造成死机。
很遗憾,我并没有花时间去制作不同pagepool大小的ROM,并测试其系统运行速度。一是目前手头没时间,二是我觉得我的目的并不是想提供个测试数据供网友参考,重点是想说明pagepool的原理,既然有了免费工具可方便更改,自己动手岂不是更有趣。
不过,POF用SPB Benchmark测试了4Mb~16Mb的Pagepool对WM5.0系统性能的影响。这里借用其测试结果,以供参考。
| Pagepool容量 | 可用程序存储容量 | SPB Benchmark值 |
| 4Mb | 50.68Mb | 347.88 |
| 6Mb | 48.68Mb | 346.03 |
| 8Mb | 46.67Mb | 345.95 |
| 12Mb | 42.66Mb | 348.53 |
| 16Mb | 39.64Mb | 351.26 |
从上面可以看出,从4Mb到16Mb,pagepool容量越大,可用程序存储容量是越小的。且pagepool的大小对系统性能的影响并不是想象中的那么大。(注:SPB Benchmark值越大越好)。但这只是WM5.0下的测试,有兴趣的网友可以测试下WM6.0下的情况。
那么Pagepool大小到底要设置多少比较合适?Dopod官方英文版WM6.0 ROM的Pagepool大小是6Mb。而该官方版ROM的稳定性是无可非议的,至少这个是我用过ROM中最稳定的,所以6Mb不妨可以作为参考。
3.如何查看ROM的pagepool大小?
Pagepool changer工具可直接查看被加载nbh或OS.nb的pagepool大小。如下图是加载RUU_signed.nbh文件后,提示该ROM文件的Pagepool大小是6Mb,以及在内存中的偏移值3addd4。
用NBHtool解开RUU_signed.nbh,点此查看如何用NBHtool解nbh文件,然后用pagepool changer加载该Windows.nb(OS.nb),请注意提示pagepool大小是同样的6Mb,但内存偏移值3abcaa是不一样的。
也可以采用POF介绍的方法,通过用十六进制编辑软件,如winhex,直接开打Windows.nb文件来查看。我推荐网友采用这种方法。因为一味靠傻瓜式的工具反而会降低自己的动手能力。
用winhex加载windows.nb,按Ctrl+F搜索”NKKD8″字符串,如下图:
找到第二个”NKKD8″字符串,
然后下拉,寻找FFFF FFFF FFFF FFFF 9B4F FFFF 64B0 0000,该代码下面一行其中就包括pagepool的内存偏移值,如下图红色方框处。
这里6000代表Pagepool是6Mb。而数字6所在偏移值就是3abcaa,和用工具查看的结果是一致。
A000~F000代表容量为10Mb~15Mb。
0001代表是16Mb Pagepool。
4.如何更改Pagepool大小?
用pagepool changer加载RUU_signed.nbh或OS.nb,然后可以在下图左边红色框框内选择拟修改的pagepool大小,或者在右边红色方框内自定义大小,1Mb~16Mb。然后点击”Change to”就可以了。
点击”Change to”后,工具会将ROM文件的pagepool容量更改至所设定的大小。状态栏显示”Ready”的话,代表已经修改完毕。
注:本文参考了XDA上POF的帖子和Windows Mobile Blog文章。
winhex下载,点此。
Pagepool changer V1.2工具下载,建议到XDA发布页上下载,或在本站下载。
1. XDA论坛下载:点此
2. 本站下载:
pagepool_changer.exe
exe- File
06. Sep 2007 (210Hits)
转载文章请注明转载自:ThinkAgain - Let's Blog!



























2007.09.07 Friday 8:57 am
这就不了解了,玩pda的时候好像没有pp这个概念吧,或者我不知道
2007.09.07 Friday 12:02 pm
pagepool出现wm5.0系统后,wm2003之前是没有这个概念的。