Linux虚拟内存管理笔记1

Linux虚拟内存管理笔记1

ID:38581582

大小:37.00 KB

页数:4页

时间:2019-06-15

Linux虚拟内存管理笔记1_第1页
Linux虚拟内存管理笔记1_第2页
Linux虚拟内存管理笔记1_第3页
Linux虚拟内存管理笔记1_第4页
资源描述:

《Linux虚拟内存管理笔记1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux虚拟内存管理笔记1Linux将内存管理分为三个层次:存储节点(node),管理区(zone),和页面(page)。1.存储节点Linux把cpu访问时间相同的存储空间叫做:存储节点。其数据结构为: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;str

2、uctbootmem_data*bdata;unsignedlongnode_start_paddr;/*节点的起始地址对应的页号*/unsignedlongnode_start_mapnr;unsignedlongnode_size;/*节点中页面总数*/intnode_id;structpglist_data*node_next;}pg_data_t;l若干存储节点的pglist_data数据结构可以通过node_next形成一个单链表队列。l每个结构中的node_mem_map指向具体节点的page结构数组,该数组包含了存储节点中的所有物理页框。数组的下标就是页号。l数

3、组node_zone[]就是该节点的最多三个页面管理区。l在pglist_data结构里设置了一个node_zonelists数组,其类型定义也在同一文件中:typedefstructzonelist_struct{zone_t*zone[MAX_NR_ZONE+1];//NULLdelimitedIntgfp_mast;}zonelist_t;每一个zonelist_t代表一种页面分配策略。42010年6月17日星期四2.管理区Linux将一个节点中的存储区域划分为三个管理区,分别是ZONE_DMA区(小于16MB),ZONE_NORMAL(16MB~896MB),ZONE

4、_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;

5、char*name;unsignedlongsize;}zone_t;#defineZONE_DMA0#defineZONE_NORMAL1#defineZONE_HIGHMEM2#defineMAX_NR_ZONES3llock:用来保证对该结构中其它域的串行访问lfree_pages:在这个区中现有空闲页的个数lpages_min、pages_low及pages_high是对这个区最少、次少及最多页面个数的描述lneed_balance:与kswapd合在一起使用lfree_area:在伙伴分配系统中的位图数组和页面链表lzone_pgdat:本管理区所在的存储节点lzo

6、ne_mem_map:该管理区的内存映射表lzone_start_paddr:该管理区的起始物理地址42010年6月17日星期四lzone_start_mapnr:在mem_map中的索引(或下标)lname:该管理区的名字lsize:该管理区物理内存总的大小其中,free_area_t定义为:#difineMAX_ORDER10typestructfree_area_struct{structlist_headfree_listunsignedint*map}free_area_t因此,zone_struct结构中的free_area[MAX_ORDER]是一组“空闲

7、区间”链表。为什么要定义一组而不是一个空闲队列呢?这是因为常常需要成块地在物理空间分配连续的多个页面,所以要按块的大小分别加以管理。因此,在管理区数据结构中既要有一个队列来保持一些离散(连续长度为1)的物理页面,还要有一个队列来保持一些连续长度为2的页面块以及连续长度为4、8、16、…、直至2MAX_ORDER(即4M字节)的队列。3.页面typedefstructpage{structlist_headlist;structaddress_space*mapping;unsignedlongindex

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

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

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