linux内存管理之物理内存管理

linux内存管理之物理内存管理

ID:46284439

大小:71.50 KB

页数:4页

时间:2019-11-22

linux内存管理之物理内存管理_第1页
linux内存管理之物理内存管理_第2页
linux内存管理之物理内存管理_第3页
linux内存管理之物理内存管理_第4页
资源描述:

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

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*/structpageode_mem_map;unsignedlong*valid_addr_bitmap;structbootme

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

3、该节点的最多三个页而管理区。•在pglist_data结构里设置了一个node_zonelists数组,其类型定义也在同一文件中:typedefstructzonelist_struct{zone_t*zone[MAX_NR_ZONE+11;//NULLdelimitedIntgfp_mast;}zonelist_t;每_个zonelist_t代表一种页面分配策略。2.管理区Linux将一个节点屮的存储区威划分为三个管理区,分别是ZONE_DMA区(小于16MB),ZONE_NORMAL(16MB〜896MB),ZONE_HIGHMEM区(大于896MB)。其数据结构为:typedefs

4、tructzone_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;#defi

5、neZONE.DMA0#defineZONE_NORMAL1#defineZONE_HIGHMEM2#defineMAX_NR_ZONES3•lock:用来保证对该结构屮-其它域的串行访问•free_pages:在这个区中现有空闲页的个数•pages_min>pages_low及pages_high是对这个区最少、次少及最多页而个数的描述•need_balance:与kswapd合在一起使用•free_area:在伙伴分配系统中的位图数组和页面链表•zone_pgdat:本管理区所在的存储节点•zone_mem_map:该管理区的内存映射表•zone_start_paddr:该管理区的起

6、始物理地址•zone_start_mapnr:在mem_map中的索引(或卜标)•name:该管理区的名字•size:该管理区物理内存总的大小其中,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字节)的队列。2.页面typedefstructpage{structlist_headlist;structaddress_space*mapping;unsignedlongindex;structpage*next_hash;atomic_tcount

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

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

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