关于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的 http://www.informit.com/content/images/0131453483/downloads/gorman_book.pdf
下来看看就应该知道了 我就是看Understanding The Linux Virtual Memory Manager才有这个问题的呀。
Understanding The Linux Virtual Memory Manager上有讲到这个问题啊? 我记得好像第一章讲的就是zone吧 我现在总算明白了
原来在一个系统中最多九三个zone,我以前在看Understanding The Linux Virtual Memory Manager的时候,还以为它是在说每种zone都有很多个呢。所以被搞晕了 dma,normal,highmem
页:
[1]