linux内存管理之物理内存管理_第1页
linux内存管理之物理内存管理_第2页
linux内存管理之物理内存管理_第3页
linux内存管理之物理内存管理_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux虚拟内存管理笔记1linux将内存管理分为三个层次:存储节点(node),管理区(zone),和 页面(page)。1存储节点linux把cpu访问时间相同的存储空间叫做:存储节点。英数据结构为:typedef struct pglist_data zone_t node_zonesmax_nr_zones;zonelist_t node_zonelistsgfp_zonemask+1 ;int nr_zones;/*表示该节点屮管理区的个数,1 -3*/struct page ode_mem_map;unsigned long *valid_addr_bitmap;struct b

2、ootmem_data *bdata;unsigned long node_start_paddr;/*节点的起始地址对应的页号*/unsigned long node_start_mapnr;unsigned long node_size;/*节点屮页而总数*/int node_id;struct pglist_data *node_next; pg_data_t; 若干存储节点的pglist_data数据结构可以通过nocle_next形成一个单链表队 列。每个结构屮的node_mem_map指向具体节点的page结构数组,该数组包含 了存储节点中的所有物理页框。数组的下标就是页号。 数组

3、node_zone就是该节点的最多三个页而管理区。 在pglist_data结构里设置了一个node_zonelists数组,其类型定义也在同一 文件中:typedef struct zonelist_struct zone_t *zonemax_nr_zone+11; /null delimitedint gfp_mast; zonelist_t;每_个zonelist_t代表一种页面分配策略。2. 管理区linux将一个节点屮的存储区威划分为三个管理区,分别是zone_dma区 (小于 16mb) , zone_normal (16mb896mb) , zone_highmem 区 (大于

4、896mb)。其数据结构为:typedef struct zone_struct spinlock_t lock;unsigned long free_pages;unsigned long pages_min, pages_low, pages_high;intneed_balance;free_area_t free_areamax_order;struct pglist_data *zone_pgdat;struct page *zone_mem_map;unsigned longzone_start_paddr;unsigned longzone_start_mapnr;char*n

5、ame;unsigned longsize; zone_t;#define zone.dma0#define zone_normal1#define zone_highmem2#define max_nr_zones3 lock:用来保证对该结构屮-其它域的串行访问 free_pages :在这个区中现有空闲页的个数 pages_min> pages_low及pages_high是对这个区最少、次少及最多页而个数 的描述 need_balance:与 kswapd 合在一起使用 free_area:在伙伴分配系统中的位图数组和页面链表 zone_pgdat:本管理区所在的存储节点 zon

6、e_mem_map:该管理区的内存映射表 zone_start_paddr:该管理区的起始物理地址 zone_start_mapnr:在 mem_map 中 的索引(或卜标) name:该管理区的名字 size:该管理区物理内存总的大小其中,free_area_t定义为:#difine max.order 10type struct free_area_struct struct list_head free_listunsigned int *map free_area_t因此,zone_struct结构中的free_areamax_order是一组“空闲区间”链表。为什么要定义一组而不是一

7、个空闲队列呢?这是因为常常需要成块地在物理空 间分配连续的多个页面,所以要按块的大小分别加以管理。因此,在管理区数 据结构屮既要有一个队列来保持一些离散(连续长度为1)的物理页而,还要 有一个队列来保持一些连续氏度为2的页面块以及连续氏度为4、8、16直至2 max_order (即4m字节)的队列。3. 页面typedef struct page struct list_head list;struct address_space * mapping;unsigned long index;struct page *next_hash;atomic_t count;unsigned long flags;struct list_head lru;wait_queue_head_t wait;struct page *pprev_hash;struct buffer_head * buffers;void * virtual;struct zone_struct *zone;list :指向链表中的下一页mapping :表示该页所在地址空间描述结构指针,用于内容为文件的页帧 index:在映射表屮的偏移next_hash:指向页高速缓存哈希表中下一个共享的页c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论