关于页的标志位,你想说些什么?
比如:
你之前一直将某个标志位的含义误解了,导致哪些地方一直理解不了;
每个标志位在哪些情况会被置位,哪些情况会被清零;
。。。 本帖最后由 Buddy_Zhang1 于 2016-03-08 11:01 编辑
我想知道在没有配置 CONFIG_PAGEFLAGS_EXTENDED 下 PG_compound 的使用方法
我还想知道 GFP_ZONE_TABLE 是如何创建的 回复 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 ?
}
}
回复 3# _nosay
{:yxh45:}
哈哈哈哈,坐观其贴
每个标志位在哪些情况会被置位,哪些情况会被清零;
这是最关键的地方:lol PG_compound貌似跟__GFP_COMP有关系,huge-page(4M大页)是其中的一个用法。 回复 5# nswcfd
大牛,好久不见 {:qq23:} 。
别这么说,内存管理这一块,也就从ULKv3上面了解到一点皮毛,而且还都是2.6.18时代的老古董 :(
还得继续向各位真正的大牛学习才行(不知道他们平时都逛啥论坛呀),非常期望Buddy_Zhang1的模拟器 :) 回复 8# nswcfd
给您透漏一点真实的信息,我写这个模拟器已经一年了,这一年被各种编译器,汇编,链接器各种虐.
模拟器基本写好了,现在在写测试程序,测试内存各种情况下的 bug.
再过两周就开始写这个模拟器的开发文档了.
推荐两个学习内核的最好方式:
1. 源码
2. 内核邮件列表 + linux commit (这个网址的链接无法贴出来,超给力的内核学习网址,专门用来看内核 commit 的)
哈哈哈,大家相互学习哈哈哈,希望我的模拟器出来之后能帮助那些想学习 linux 内存 的 buddy们.
哈哈哈哈,不多说了,继续 debug 红黑树了. 多谢,赞!
页:
[1]
2