|
感谢各位的回答和支持。
最近查了些相关资料,在这儿总结一下我的理解。
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。 |
|