关于WinCE中的paging pool
照PB帮助文档中所说:Paging pool是RAM中reserved的一块区域。用于存放只读的代码。如果paging pool没有使能,则整个RAM都会用来paging,这样就会显著增大RAM的利用率。使用paging pool,会设置有限的RAM用于paging。Paging pool的size越大,越多的RAM可以用来paging。这样就会减少page faults ,因为更多的代码存储在paging pool中。
在手头的项目中,我把Paging pool的size设置为1M,5M,10M,以及不使用Paging pool的情况下,这四种情况系统启动时间,以及读Nand Flash的次数都相似。而当Paging pool的size设置为256K时,系统启动时间会变慢,而且读取Nand Flash的次数明显增多。
既然size设置为1M和10M没什么区别,说明reserve出1M的Ram用于Paging已经足够了,那对于保存在Nand Flash中的十几兆的Image来说,哪些东西是可pagable的,放在Paging Pool中,哪些是不能pagable的。
谢谢!
[解决办法]
只有在内存里的数据才有pagable一说,放在Flash里的东西无所谓pagable。CE 5的paging策略非常简单,只有只读数据(即可执行程序的代码段、只读数据段和只读内存映射文件)是pagable的,其余的都不是。CE 6中有两个pool,loader pool和CE 5相同,file pool中可以放read-write内存映射文件和文件系统的缓存数据。