正在进行安全检测...

Linux虚拟内存管理笔记1Linux将内存管理分为三个层次:存储节点(node),管理区(zone),和页面(page)。1.存储节点Linuxcpu访问时间相同的存储空间叫做:存储节点。其数据结构为:typedefstructpglist_data{zone_tnode_zones[MAX_NR_ZONES];zonelist_tnode_zonelists[GFP_ZONEMASK+1];intnr_zones;/*表示该节点中管理区的个数,1--3*/structpage*node_mem_map;unsignedlong*valid_addr_bitmap;structbootmem_data*bdata;unsignedlongnode_start_paddr;/*节点的起始地址对应的页号*/unsignedlongnode_start_mapnr;unsignedlongnode_size;/*节点中页面总数*/intnode_id;structpglist_data*node_next;}pg_data_t;若干存储节点的pglist_data数据结构可以通过node_next形成一个单链表队列。每个结构中的node_mem_map指向具体节点的page结构数组,该数组包含了存储节点中的所有物理页框。数组的下标就是页号。数组node_zone[]就是该节点的最多三个页面管理区。pglist_data结构里设置了一个node_zonelists数组,其类型定义也在同一文件中:typedefstructzonelist_struct{zone_t*zone[MAX_NR_ZONE+1];//NULLdelimitedIntgfp_mast;}zonelist_t;每一个zonelist_t代表一种页面分配策略。12010617日星期四
2.管理区Linux将一个节点中的存储区域划分为三个管理区,分别是ZONE_DMA(小于16MB),ZONE_NORMAL16MB~896MB),ZONE_HIGHMEM(大于896MB)。其数据结构为:typedefstructzone_struct{spinlock_tlock;unsignedlongfree_pages;unsignedlongpages_min,pages_low,pages_high;intneed_balance;free_area_tfree_area[MAX_ORDER];structpglist_data*zone_pgdat;structpage*zone_mem_map;unsignedlongzone_start_paddr;unsignedlongzone_start_mapnr;char*name;unsignedlongsize;}zone_t;#defineZONE_DMA0#defineZONE_NORMAL1#defineZONE_HIGHMEM2#defineMAX_NR_ZONES3lock:用来保证对该结构中其它域的串行访问free_pages:在这个区中现有空闲页的个数pages_minpages_lowpages_high是对这个区最少、次少及最多页面个数的描述need_balance:与kswapd合在一起使用free_area:在伙伴分配系统中的位图数组和页面链表zone_pgdat:本管理区所在的存储节点zone_mem_map:该管理区的内存映射表zone_start_paddr:该管理区的起始物理地址22010617日星期四
《正在进行安全检测....doc》
将本文的Word文档下载,方便收藏和打印
推荐:
下载文档
热门推荐
相关推荐