Linux内存管理中的 Slab 分配机制.pdf
(3页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
4.9 积分
现代计算机!总第二三五期"M O D E R N C OM P U T E R 2006.5实践与经验1 Li nux 内存管理体系在 Intel 80x86 体系结构中, Linux 内核的内存管理采用了分页管理方式, 真正实现了虚拟存储器管理, 其虚拟内存管理的实现结构如图 1 所示。图 1内存映射模块负责把磁盘文件的逻辑地址映射到虚拟地址, 把虚拟地址映射到物理地址; 交换模块负责控制内存内容的换入和换出; 核心管理模块负责核心内存管理功能, 即对页的分配、回收、释放及请页处理等; 结构特定的模块负责给各种硬件提供通用接口, 这个模块通过执行命令来改变硬件 MMU 的虚拟地址映射。Linux 虚拟内存的实现机制为: 内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用到的虚地址没有对应的物理内存时, 就发出了请页要求; 如果有空闲的内存可供分配, 就请求分配内存, 并把正在使用的物理页纪录在页缓存中。如果没有足够的内存可供分配, 那么就调用交换机制, 腾出一部分内存。另外, 在地址映射中要通过 TLB 来寻找物理页, 交换机制中也要用到交换缓存, 并且把物理页内容交换到交换文件后也要修改页表来映射文件地址。2 Sl a b 分配机制概述Slab 分配机制用来对内存区域中内核空间进行分配和回收。Slab 使用对象来组织内存区域, 对象就是指存放一组数据结构的内存区。Slab 根据内存区的使用频率对内存区域进行划分。对于预期频繁使用的内存区, Slab 创建一组特定大小的专用缓冲区进行处理, 以避免内碎片的产生; 对于较少使用的内存区,Slab 创建一组通用缓冲区来处理, 即使这种处理模式产生碎片, 对整个系统的性能影响也不大。Slab 分配模式把对象分组放进缓冲区, Slab 缓冲区并非由各个对象直接构成, 而是由一连串的 Slab 构成,而每个大块中则包括了若干个同种类型的对象。高速缓存、Slab 及对象之间的关系如图 2 所示。图 2Linux内存管理中的 Slab 分配机制赵鲲鹏 1 , 苏葆光 2( 1. 长安大学, 西安 710061; 2. 浙江万里学院, 宁波 315101)摘 要: 早期 Linux 的内存分配机制采用伙伴算法, 当请求分配的内存大小为几十个字节或几百个字节时会产生内存碎片, 严重消耗系统资源。现今采用 Slab 机制可以缓存物理空间的申请和回收, 杜绝外部碎片的产生, 降低内部碎片量。本文分析了 Slab 内存分配机制及其数据结构和接口函数, 然后给出了 Slab 机制的实现。关键词: Slab; 内存管理; Linux; 分配机制!" 关 键 词: 机制 linux 内存 管理 分配 slab
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文