Welcome 微信登录

首页 / 操作系统 / Linux / Linux内存管理之伙伴系统(建立)

内核使用伙伴系统来解决内存分配引起的外部碎片问题。 一、数据结构描述结构zone中的free_area数组描述伙伴系统该数组为free_area结构 
  1. struct zone {  
  2. ……  
  3.     struct free_area    free_area[MAX_ORDER];  
  4. ……  
  5. };  
 
  1. struct free_area {/*链表类型为5类,对于分类为新加入的*/  
  2.     struct list_head    free_list[MIGRATE_TYPES];  
  3.     unsigned long       nr_free;  
  4. };  
下图为伙伴系统在管理区中的表示。
 二、伙伴系统的初始化在初始化物理管理区的时候初始化伙伴系统的,具体实现在下面的函数中:Start_kernel()->setup_arch()->paging_init()->zone_sizes_init()->free_area_init_nodes()->free_area_init_node()->free_area_init_core()->init_currently_empty_zone()->zone_init_free_lists() 
  1. /*初始化对应zone中所有order和所有类型的链表*/  
  2. static void __meminit zone_init_free_lists(struct zone *zone)  
  3. {  
  4.     int order, t;  
  5.     for_each_migratetype_order(order, t) {  
  6.         INIT_LIST_HEAD(&zone->free_area[order].free_list[t]);  
  7.         zone->free_area[order].nr_free = 0;  
  8.     }  
  9. }  
  • 1
  • 2
  • 下一页
Linux内存管理之伙伴系统(内存分配)Linux使用nohup命令让程序永远停在后台相关资讯      Linux内存 
  • Linux内存管理精述  (01月18日)
  • 在 Linux x86-32 模式下分析内存映  (02/08/2015 07:25:25)
  • Linux下如何释放cache内存  (02/02/2015 13:36:34)
  • 在 Linux x86-64 模式下分析内存映  (02/08/2015 07:33:09)
  • Linux系统入门学习:如何检查Linux  (02/06/2015 10:36:00)
  • Linux内存映射  (04/04/2014 13:21:48)
本文评论 查看全部评论 (0)
表情: 姓名: 字数