关于WinCE中的paging pool

flyalice 2009-02-12 07:44:00
加精
照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的。
谢谢!
...全文
394 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
PQM09 2010-12-15
  • 打赏
  • 举报
回复
好。终于明白了。交流真的很重要啊!
qclzdh 2010-09-10
  • 打赏
  • 举报
回复
以后做到了,在来看
guopeixin 2009-02-17
  • 打赏
  • 举报
回复
^_^,好文章
flyalice 2009-02-16
  • 打赏
  • 举报
回复
感谢各位的回答和支持。
最近查了些相关资料,在这儿总结一下我的理解。

1.Paging pool是RAM中reserved的一块区域。用于存放只读的可执行文件的代码,数据以及内存映射文件。如果使用paging pool就会给pagale data所使用的内存设定限制,还包括将pagable data从内存移出的算法机制。
2.如不使用paging pool,这意味着操作系统不限制保存可执行文件和内存映射文件的page的数量。如果你跑了很多的程序或访问大量的内存映射文件,你会看到内存使用率相应的增加。内存使用率会继续上升,直到系统耗尽内存。其他内存分配就会失败。内存看起来好像真的用完了,而实际上还存在大量潜在的可以通过paging data out从而释放的空间。直到最后,当系统达到最低内存限制时,内核将遍历所有的pagale数据,并全部page out(是的,全部)。这样就会突然间出现大量的可用内存,你正在使用的数据就会通过产生page fault重新page in到内存。
3.如果使用paging pool,会设置有限的RAM用于存放pageable的data。Pool的size设置太小,这意味着pages可能会被过早地page out,尽管他们仍然在使用。Pool大小设置得太大,这意味着操作系统将保留更多的内存用于pageable data。这样就会减少page faults ,因为更多的代码存储在paging pool中。但Pool内存将无法被应用程序使用。
4.不管是不是paging pool,都会paging。只不过对于paging pool,page in的data还可以page out。而对于非paging pool中的data则不会被page out。
zzc10 2009-02-15
  • 打赏
  • 举报
回复
太好了,学习。。。。。。。。。。。。。。。
xajhuang 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 singlerace 的回复:]
只有在内存里的数据才有pagable一说,放在Flash里的东西无所谓pagable。CE 5的paging策略非常简单,只有只读数据(即可执行程序的代码段、只读数据段和只读内存映射文件)是pagable的,其余的都不是。CE 6中有两个pool,loader pool和CE 5相同,file pool中可以放read-write内存映射文件和文件系统的缓存数据。
[/Quote]

长见识了。
xumercury 2009-02-13
  • 打赏
  • 举报
回复
mark。学习
vtina521 2009-02-13
  • 打赏
  • 举报
回复
up
singlerace 2009-02-12
  • 打赏
  • 举报
回复
只有在内存里的数据才有pagable一说,放在Flash里的东西无所谓pagable。CE 5的paging策略非常简单,只有只读数据(即可执行程序的代码段、只读数据段和只读内存映射文件)是pagable的,其余的都不是。CE 6中有两个pool,loader pool和CE 5相同,file pool中可以放read-write内存映射文件和文件系统的缓存数据。
gooogleman 2009-02-12
  • 打赏
  • 举报
回复
这个东西我想知道,但是自己知道还不够水平去研究。哪个知道说说哦。
gsymichael 2009-02-12
  • 打赏
  • 举报
回复
顶。
wangzhenyue 2009-02-12
  • 打赏
  • 举报
回复
up

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧