QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1338|回复: 5

关于linux内存管理中的zone

[复制链接]
发表于 2004-12-24 03:28:09 | 显示全部楼层 |阅读模式
在__alloc_pages()中遇到下面这段代码没看明白:
[code:1]for (;;) {
zone_t *z = *(zone++);
if (!z)
  break;

min += z->pages_low;
if (z->free_pages > min) {
  page = rmqueue(z, order);
  if (page)
   return page;
}
}[/code:1]
我不知道zone是怎么组织的啊,以及有什么作用?所以不明白为什么在申请page的时候要进行作min += z->pages_low;
if (z->free_pages > min)的判断
还有pages_low,page_min,page_high这三个整数纪录的是什么
数据
随便说一下,这段代码是linux2.4.22的
发表于 2004-12-24 11:32:21 | 显示全部楼层
http://www.informit.com/content/images/0131453483/downloads/gorman_book.pdf
下来看看就应该知道了
回复

使用道具 举报

 楼主| 发表于 2004-12-24 23:34:12 | 显示全部楼层
我就是看Understanding The Linux Virtual Memory Manager才有这个问题的呀。
Understanding The Linux Virtual Memory Manager上有讲到这个问题啊?
回复

使用道具 举报

发表于 2004-12-27 09:20:51 | 显示全部楼层
我记得好像第一章讲的就是zone吧
回复

使用道具 举报

 楼主| 发表于 2004-12-28 23:43:42 | 显示全部楼层
我现在总算明白了
原来在一个系统中最多九三个zone,我以前在看Understanding The Linux Virtual Memory Manager的时候,还以为它是在说每种zone都有很多个呢。所以被搞晕了
回复

使用道具 举报

发表于 2004-12-29 09:47:36 | 显示全部楼层
dma,normal,highmem
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 09:01 , Processed in 0.034797 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表