Linux内存管理详解.docx

Linux内存管理详解.docx

ID:50369680

大小:73.75 KB

页数:21页

时间:2020-03-08

Linux内存管理详解.docx_第1页
Linux内存管理详解.docx_第2页
Linux内存管理详解.docx_第3页
Linux内存管理详解.docx_第4页
Linux内存管理详解.docx_第5页
资源描述:

《Linux内存管理详解.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、13. 内存管理13.1. 引言Linux对物理内存的描述机制有两种:UMA和NUMA。Linux把物理内存划分为三个层次来管理:存储节点(Node)、管理区(Zone)和页面(Page)。UMA对应一致存储结构,它只需要一个Node就可以描述当前系统中的物理内存,但是NUMA的出现打破了这种平静,此时需要多个Node,它们被统一定义为一个名为discontig_node_data的数组。为了和UMA兼容,就将描述UMA存储结构的描述符contig_page_data放到该数组的第一个元素中。内核配置选项CONFIG_NUMA决定了当前系统

2、是否支持NUMA机制。此时无论UMA还是NUMA,它们都是对应到一个类型为pg_data_t的数组中,便于统一管理。图 71. NodeZone和Page的关系上图描述Linux管理物理内存的三个层次之间的拓扑关系。从图中可以看出一个存储节点由pg_data_t描述,一个UMA系统中只有一个Node,而在NUMA中则可以存在多个Node。它由CONFIG_NODES_SHIFT配置选项决定,它是CONFIG_NUMA的子选项,所以只有配置了CONFIG_NUMA,该选项才起作用。UMA情况下,NODES_SHIFT被定义为0,MAX_NUM

3、NODES也即为1。include/linux/numa.h#ifdefCONFIG_NODES_SHIFT#defineNODES_SHIFTCONFIG_NODES_SHIFT#else#defineNODES_SHIFT0#endif#defineMAX_NUMNODES(1<

4、[0]};EXPORT_SYMBOL(contig_page_data);structpglist_data即是pg_data_t的原型。了解pg_data_t中的结构成员对于了解内存管理是必经之路:enumzone_type{ZONE_DMA,ZONE_NORMAL,ZONE_MOVABLE,......__MAX_NR_ZONES};typedefstructpglist_data{structzonenode_zones[MAX_NR_ZONES];structzonelistnode_zonelists[MAX_ZONELISTS]

5、;intnr_zones;#ifdefCONFIG_FLAT_NODE_MEM_MAP/*means!SPARSEMEM*/structpage*node_mem_map;#ifdefCONFIG_CGROUP_MEM_RES_CTLRstructpage_cgroup*node_page_cgroup;#endif#endifstructbootmem_data*bdata;....../*forCONFIG_MEMORY_HOTPLUG*/unsignedlongnode_start_pfn;unsignedlongnode_prese

6、nt_pages;/*totalnumberofphysicalpages*/unsignedlongnode_spanned_pages;/*totalsizeofphysicalpagerange,includingholes*/intnode_id;wait_queue_head_tkswapd_wait;structtask_struct*kswapd;intkswapd_max_order;}pg_data_t;·node_zones:当前节点中包含的最大管理区数。MAX_NR_ZONES在include/linux/bounds

7、.h定义,该文件是在编译过程中根据管理区类型定义中的__MAX_NR_ZONES变量自动生成的。·node_zonelists:内存分配器所使用的管理区链表数组,MAX_ZONELISTS的值在配置CONFIG_NUMA时为2,否则为1。索引为0的链表表示后援(Fallback)链表,也即当该链表中的第一个不满足分配内存时,依次尝试链表的其他管理区。索引为1,的链表则用来针对GFP_THISNODE的内存申请,此时只能申请指定的该链表中的管理区。·nr_zones:指定当前节点中的管理区数,也即node_zones中实际用到的管理区数。它的

8、取值范围为[1,MAX_NR_ZONES]。对于UMA来说,它的值为1。·node_mem_map:节点中页描述符数组首地址。·node_page_cgroup:·bdata:系

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。