【问题标题】:how is Linux kernel's free_list initialized to point to free pages?Linux 内核的 free_list 如何初始化为指向空闲页面?
【发布时间】:2014-08-06 13:58:54
【问题描述】:

我试图了解free_list(free_area of​​ zone)如何指向 Linux 内核中的不同空闲页面。任何人都可以解释内核代码的方式和位置以及它们是如何初始化的吗? 从内核代码来看,free_list在代码中的唯一初始化似乎是在kernel/mm/page_alloc.c的zone_init_free_lists()函数中:

for_each_migratetype_order(order, t) { 
INIT_LIST_HEAD(&zone->free_area[order].free_list[t]);
                          zone->free_area[order].nr_free = 0; 
}   

从此代码free_list 没有指向free_pages 块??** 任何帮助将不胜感激。**

【问题讨论】:

    标签: c memory-management linux-kernel


    【解决方案1】:

    我知道页面是如何添加到空闲列表中的,这里是 start_kernel() 的函数流。

           start_kernel();
           mm_init()
           mem_init()
           free_all_bootmem()
           free_all_bootmem_core()
           free_all_bootmem_core()
           __free_pages()
           __free_pages_ok()
           free_one_page()
           __free_one_page()
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2017-11-07
      • 1970-01-01
      • 2012-12-28
      • 2015-06-18
      • 2014-05-20
      • 1970-01-01
      相关资源
      最近更新 更多