有段时间没有写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。 

查看pagepool大小

用NBHtool解开RUU_signed.nbh,点此查看如何用NBHtool解nbh文件,然后用pagepool changer加载该Windows.nb(OS.nb),请注意提示pagepool大小是同样的6Mb,但内存偏移值3abcaa是不一样的。

查看pagepool大小

也可以采用POF介绍的方法,通过用十六进制编辑软件,如winhex,直接开打Windows.nb文件来查看。我推荐网友采用这种方法。因为一味靠傻瓜式的工具反而会降低自己的动手能力。

 用winhex加载windows.nb,按Ctrl+F搜索”NKKD8″字符串,如下图:

 搜索NKKD8字符串

找到第二个”NKKD8″字符串,

第二个NKKD8字符串

然后下拉,寻找FFFF FFFF FFFF FFFF 9B4F FFFF 64B0 0000,该代码下面一行其中就包括pagepool的内存偏移值,如下图红色方框处。 

pagepool内存偏移值

这里6000代表Pagepool是6Mb。而数字6所在偏移值就是3abcaa,和用工具查看的结果是一致。

1000~9000代表pagepool容量为1~9Mb。 

A000~F000代表容量为10Mb~15Mb。

0001代表是16Mb Pagepool。

  

4.如何更改Pagepool大小?

用pagepool changer加载RUU_signed.nbh或OS.nb,然后可以在下图左边红色框框内选择拟修改的pagepool大小,或者在右边红色方框内自定义大小,1Mb~16Mb。然后点击”Change to”就可以了。

更改pagepool大小

点击”Change to”后,工具会将ROM文件的pagepool容量更改至所设定的大小。状态栏显示”Ready”的话,代表已经修改完毕。

更改pagepool大小

  

注:本文参考了XDA上POF的帖子Windows Mobile Blog文章

 

工具软件下载 

winhex下载,点此

Pagepool changer V1.2工具下载,建议到XDA发布页上下载,或在本站下载。

1. XDA论坛下载:点此 

2. 本站下载:

Download pagepool_changer.exe
exe- File
06. Sep 2007 (210Hits)

 

Feed Me


转载文章请注明转载自:ThinkAgain - Let's Blog!

引用地址:http://www.thinkagain.cn/archives/694.html