icoming 发表于 2004-12-24 03:28:09

关于linux内存管理中的zone

在__alloc_pages()中遇到下面这段代码没看明白:
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;
}
}
我不知道zone是怎么组织的啊,以及有什么作用?所以不明白为什么在申请page的时候要进行作min += z->pages_low;
if (z->free_pages > min)的判断
还有pages_low,page_min,page_high这三个整数纪录的是什么
数据
随便说一下,这段代码是linux2.4.22的

shy828301 发表于 2004-12-24 11:32:21

http://www.informit.com/content/images/0131453483/downloads/gorman_book.pdf
下来看看就应该知道了

icoming 发表于 2004-12-24 23:34:12

我就是看Understanding The Linux Virtual Memory Manager才有这个问题的呀。
Understanding The Linux Virtual Memory Manager上有讲到这个问题啊?

shy828301 发表于 2004-12-27 09:20:51

我记得好像第一章讲的就是zone吧

icoming 发表于 2004-12-28 23:43:42

我现在总算明白了
原来在一个系统中最多九三个zone,我以前在看Understanding The Linux Virtual Memory Manager的时候,还以为它是在说每种zone都有很多个呢。所以被搞晕了

shy828301 发表于 2004-12-29 09:47:36

dma,normal,highmem
页: [1]
查看完整版本: 关于linux内存管理中的zone