[动态内存的组织方法]动态内存全部在伙伴系统,保留页框池和页框高速缓存中吗?
各位好:
动态内存的管理方法很多,包括伙伴系统,页框高速缓存,slab等。但最基本的动态内存组织方法仅为伙伴系统,保留页框池和页框高速缓存是吗?其中保留页框池用于原子申请,页框高速缓存用于请求大小为1个页面的内存分配。
我做了一个实验:遍历3个zone中的所有的伙伴系统内存块,记录下页框个数。在我的系统中,这个数量为4345。保留页框池min_free_kbytes的值为3789。通过表里zone的pcp获得页框高速缓存的大小:478。总数为:8612。 然后再遍历mem_map数组,记录下page_count为0的页面,这个数量为187424。动态内存中页面的总数量应该为509697。
因此,我有了一点疑惑,为什么大部分没有使用的页不在伙伴系统中?而且,伙伴系统中仅维护了大约17M的动态内存。那么绝大部分没有被使用的页都通过什么来维护?
Regards Arethe
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
期盼高手...
Buddy System位于最底层,其它的都是建立于其上的高层次内存管理抽象。对上层的内存使用者来说,某些内存归还到了这些高层次的内存管理部件,是可用的。而对于Buddy System来说,它们是被分出去的。
期待 chenrvmldd兄 解答