郑重声明未经本人允许,不得用于商业或非商业的转载和.PDFVIP

郑重声明未经本人允许,不得用于商业或非商业的转载和.PDF

此“司法”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
郑重声明:未经本人允许,不得用于商业或非商业的转载和使用,如有 需要请联系:yrj1978@ 初始化mem_map mem_map是一个structpage的数组,管理着系统中所有的物理内存页面。在系 统启动的过程中,创建和分配mem_map的内存区域。UMA体系结构中, free_area_init()函数在系统唯一的structnode对象contig_page_data中 node_mem_map成员赋值给全局的mem_map变量。调用的关系图: 主要的核心函数free_area_init_core(),为node的初始化过程分配本地的 lmem_map(node-node_mem_map)。数组的内存在bootmemory分配的 alloc_bootmem_node()函数分配.在UMA体系结构中,这个新分配的lmem_map 成为全局的mem_map.对于NUMA体系,lmem_map赋值给每一个node的 node_mem_map成员,而这个情况下mem_map就被简单的赋值为 PAGE_OFFSET(有 兴趣理解NUMA体系结构的可以阅读英文原版,了解更多信息)。UMA体系中, node中的各个zone的 zone_mem_map就指向mem_map中的某些元素作为zone 所管理的第一个page的地址。 中间插段广告 Linux文化T恤,淘宝销售,有兴趣的可以购买。 淘宝店面地址: /browse/search_auction.htm?user=b0ccaa7bfdc57fd ec4594501767832b6commend=all Page 系统中的每个物理页面用structpage数据结构对象来表示,并且跟踪page使 用的状态: (省略了一些特定平台用到的成员) structpage{ unsignedlongflags; atomic_t_count; union{ atomic_t_mapcount; unsignedintinuse; }; union{ struct{ unsignedlongprivate; structaddress_space*mapping; }; structkmem_cache*slab; /*SLUB:Pointertoslab*/ structpage*first_page; /*Compoundtailpages*/ }; union{ pgoff_tindex; /*Ouroffsetwithinmapping.*/ void*freelist; /*SLUB:freelistreq.slablock */ }; structlist_headlru; #ifdefined(WANT_PAGE_VIRTUAL) void*virtual; #endif }; union{ atomic_t_mapcount; unsignedintinuse; }: 和页表转换有关的PTE链,下面章节将描述。 index:这个成员根据page的使用的目的有2种可能的含义。第一种情况:如果 page是filemapping的一部分,它指明在文件中的偏移。如果page是交换缓 存,则它指明在address_space所声明的对象:swapper_space(交换地址空间) 中的偏移。第二种情况:如果这个page是一个特殊的进程将要释放的一个page 块,则这是一个将要释放的 page块的序列值,这个值在__free_page_ok()函数 中设置。 mapping:当文件或设备需要内存映射,文件或设备的inode对象有一个 address_space类型的成员。如果page属于这个文件或设备,mapping将 指向 inode中这个成员。如果page不属于任何文件或设备,但是 mapping被设置了, 则mapping指向了一个add

文档评论(0)

159****9825 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档