_nosay 发表于 2016-03-08 10:55

关于页的标志位,你想说些什么?



比如:
你之前一直将某个标志位的含义误解了,导致哪些地方一直理解不了;
每个标志位在哪些情况会被置位,哪些情况会被清零;
。。。

Buddy_Zhang1 发表于 2016-03-08 11:00

本帖最后由 Buddy_Zhang1 于 2016-03-08 11:01 编辑

我想知道在没有配置 CONFIG_PAGEFLAGS_EXTENDED 下 PG_compound 的使用方法

我还想知道 GFP_ZONE_TABLE 是如何创建的

_nosay 发表于 2016-03-08 11:37

回复 2# Buddy_Zhang1

这个帖是勾引大牛的,可以把自己知道的和想知道的写出来,另外图里面画的是linux-2.4.0定义的位 :em09: 。

deactivate_page_nolock()
{
    ...

    if (PageActive(page) && page_count(page) <= maxcount && !page_ramdisk(page)) {
      del_page_from_active_list(page);
      add_page_to_inactive_dirty_list(page);    // 这里如果是干净的,也是加到inactive_dirty_list了,好像能解释为什么page_lanuder()分2遍扫描了,但为什么不在这里直接加到page->zone->inactive_clean_list ?
    }
}


   

Buddy_Zhang1 发表于 2016-03-08 11:45

回复 3# _nosay


{:yxh45:}

哈哈哈哈,坐观其贴
   

nswcfd 发表于 2016-03-08 20:12

每个标志位在哪些情况会被置位,哪些情况会被清零;
这是最关键的地方:lol

nswcfd 发表于 2016-03-08 20:16

PG_compound貌似跟__GFP_COMP有关系,huge-page(4M大页)是其中的一个用法。

_nosay 发表于 2016-03-09 08:54

回复 5# nswcfd

大牛,好久不见 {:qq23:} 。
   

nswcfd 发表于 2016-03-09 16:05

别这么说,内存管理这一块,也就从ULKv3上面了解到一点皮毛,而且还都是2.6.18时代的老古董 :(

还得继续向各位真正的大牛学习才行(不知道他们平时都逛啥论坛呀),非常期望Buddy_Zhang1的模拟器 :)

Buddy_Zhang1 发表于 2016-03-09 16:23

回复 8# nswcfd


    给您透漏一点真实的信息,我写这个模拟器已经一年了,这一年被各种编译器,汇编,链接器各种虐.
    模拟器基本写好了,现在在写测试程序,测试内存各种情况下的 bug.
    再过两周就开始写这个模拟器的开发文档了.

    推荐两个学习内核的最好方式:
    1. 源码
    2. 内核邮件列表 + linux commit (这个网址的链接无法贴出来,超给力的内核学习网址,专门用来看内核 commit 的)

   哈哈哈,大家相互学习哈哈哈,希望我的模拟器出来之后能帮助那些想学习 linux 内存 的 buddy们.


   哈哈哈哈,不多说了,继续 debug 红黑树了.

nswcfd 发表于 2016-03-09 16:49

多谢,赞!
页: [1] 2
查看完整版本: 关于页的标志位,你想说些什么?