Linux内核内存池实现研究.pdfVIP

  • 13
  • 0
  • 约1.39万字
  • 约 3页
  • 2017-07-05 发布于天津
  • 举报
Linux内核内存池实现研究.pdf

维普资讯 第 7卷 第 12期 2007年6月 科 学 技 术 与 工 程 Vo1.7 No.12 June2007 1671—1819(2007)12-2849-03 ScienceTechnologyandEngineering @ 2007 Sci.Tech.Engng. Linux内核内存池实现研究 刘 磊 (西北工业大学 ,西安 710065) 摘 要 回顾 了Linux内核 内存管理发展历程,比较了早期的Linux内存管理与最新的Linuxkernel2.6.16内存管理的联系和 差别。分析Linux最新版本的内核内存管理策略,重点研究了最新的Linux2.6.16版本内核中的内核 内存池的实现。 关键词 Linux内核 内存池 存储管理 中图法分类号 TP332,11; 文献标志码 A Linux早期的内存管理由get_free_page()、free— 成、使用和释放问题。对象生成算法的改进,可以在 page()、free—page_tables()、copy—page—tbales()、put 很大程度上提高整个系统的性能。这些对象往往在 — page()、do_wp_page()、do—no—page()和 get—empty 生成时,所包括的成员属性值一般都赋成确定的数 _ page()这几个定义在 memory.C中的函数来实现, 值,并且在使用完毕,释放结构前,这些属性又恢复 并用mem—map[]表对页面进行管理uJ。为了支持 为未使用前的状态。因此,如果我们能够用合适的 虚拟存储器 ,Linux系统采用 LRU分页替换算法载 方法使得在对象前后两次背使用时,在同一块 内存, 人进程。虚拟存储器由存储器管理机制及一个大容 或同一类内存空间,且保留了基本的数据结构,就可 量的快速硬盘存储器支持,它的实现基于局部性原 以大大提高效率 j。 理。早期的Linux内存管理虽然没有 2.6.16版本 1.1内存池的数据结构 复杂,但已经奠定了写时复制、需求加载等内存管理 Linux内存池是在2.6版内核中才有的,数据结 的基本思想。Linux是针对有 MMU的处理器设计 构定义在 include/linux/mempoo1.h中 J。其中内存 的,对具有MMU的处理器而言,虚拟地址被送到内 池的数据结构如下所示意: typedefstreetmempool 存管理单元MMU,把虚拟地址映射为物理地址。通 — s{ spinlock tlock; 过赋予每个任务不同的虚拟地址到物理地址的转换 _ intmin — nr;/}elements数组中的成员数量 }/ 映射 ,支持不 同任务之间的保护。每个用户进程 intcurtnr; /}当前 elements数组中空闲的成员数量 }/ 4GB长度的虚拟 内存被划分成固定大小的页面。 void } }elements:

文档评论(0)

1亿VIP精品文档

相关文档