一种优化的嵌入式 Linux 页面回收机制.doc

上传人:小小飞 文档编号:3621832 上传时间:2019-09-18 格式:DOC 页数:5 大小:212KB
返回 下载 相关 举报
一种优化的嵌入式 Linux 页面回收机制.doc_第1页
第1页 / 共5页
一种优化的嵌入式 Linux 页面回收机制.doc_第2页
第2页 / 共5页
一种优化的嵌入式 Linux 页面回收机制.doc_第3页
第3页 / 共5页
一种优化的嵌入式 Linux 页面回收机制.doc_第4页
第4页 / 共5页
一种优化的嵌入式 Linux 页面回收机制.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《一种优化的嵌入式 Linux 页面回收机制.doc》由会员分享,可在线阅读,更多相关《一种优化的嵌入式 Linux 页面回收机制.doc(5页珍藏版)》请在三一文库上搜索。

1、精品论文一种优化的嵌入式 Linux 页面回收机制杜航,徐惠民 北京邮电大学信息与通信工程学院, 北京 (100876) E-mail: 摘要:当前,嵌入式设备在各个领域中应用广泛,其运行的实时操作系统多以嵌入式 Linux操作系统为主,因此嵌入式 Linux 操作系统的性能直接影响到嵌入式设备的性能。内存是Linux 内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分。页面 回收机制作为内存管理的重要组成部分,对整个内存管理的性能其关键作用。本文通过研究嵌入式 Linux 内核的内存管理模块,分析其工作机制,提出现有内存管理机制存在的问题, 并通过对页面回收机制的优化,实现

2、了一种更适合于嵌入式设备的内存管理机制。此机制适合于以 Linux 2.4 作为操作系统的嵌入式设备。 关键词:Linux 内核;内存管理;页面回收中图分类号:TP316.811.引 言在当今数字信息技术、网络技术高速发展与发达的后 PC 时代,嵌入式系统无处不在,并 将不断涌现出新的嵌入式应用系统。传统的操作系统软件很难有效地支持嵌入式应用系统的 快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有重 大意义,是十分必要的。Linux 操作系统, 由于其开放源代码、高稳定性和低成本等特性, 非常适合于嵌入式系 统的开发, 成为了嵌入式领域里发展最快的操作系统。内存

3、作为最重要的系统资源,其分配和 释放策略对系统的运行效率起着至关重要的作用。系统内核和所有进程通过共享有限的物理 内存来运行,一个系统的高效性与稳定性往往取决于它内存管理机制。因此,一个高效的内存 管理系统不仅要能够有效地管理系统内存,减少频繁分配和回收内存而导致的内存碎片,还要 尽量提高分配和回收的速度来提高系统的运行效率。此外,内存管理系统还应该保证内存分 配和回收的公平性2。页面回收机制作为内存管理的重要部分,对整个内存管理机制性能的影响起至关重要的 作用。本文针对Linux 2.4.20内核中的页面回收机制进行优化,使其更适应嵌入式设备的需 求。2.嵌入式Linux页面回收机制缺陷的原

4、因分析嵌入式Linux页面回收机制缺陷归根到底源于标准Linux。由于大多数内核开发者都是基 于x86平台体系结构,同时由于嵌入式设备资源的有限性,所以导致现有Linux页面回收机制 的一些不足,有待进一步对其进行研究和改进。归纳一下,Linux页面回收机制的缺陷主要 有以下两方面:1)触发页面回收进程的阈值偏低,导致在可用内存很少的时候才触发页面回收。2)对于映射到用户态地址空间的共享页框没有进行回收。3.嵌入式Linux页面回收机制的改进方案及实现3.1 对于页面回收进程触发阈值的优化对于每个内存管理区zone,都存在三个阈值pages_high,pages_low和pages_min,每

5、次页 框请求时,即调用 alloc_pages()时,都要将空闲页框个数与一个阈值作比较,以判断当前- 5 -可用内存数量是否过低需要触发页面回收进程。以下是三个阈值的作用:1)pages_high:回收页框使用的上界。当空闲页框数大于此阈值时,挂起Kswapd进程。2)pages_low:回收页框使用的下界。当空闲页框数小于此阈值时,唤醒Kswapd进程。3)pages_min:管理区中保留也的数目。当空闲页框小于此阈值时,直接调用页面回 收函数balance_classzone()。图1显示了在页面申请中此三个阈值的作用。图1 页面回收被触发的阈值条件若经过页面回收之后还是不能成功分配页框

6、,则会调用out_of_memory()函数,该函数 选择系统中的一个进程,强行删除它并释放页框。若此进程为关键进程则会导致系统重启。 为了避免系统重启发生的几率,将内存管理区的三个阈值扩大为原来的两倍,即提前进行页 面回收。经过长期测试发现,系统因内存不足而重启的几率明显下降。3.2 回收共享页框的实现页面回收机制按照页框所含内容,以不同的方式处理页框。我们将它们区分成:不可回 收页、可交换页、可同步页和可丢弃页,如表1所示1。表1 页面回收处理的页框类型页类型说明回收操作不可回收页空闲页(包括在伙伴系统列表中)保留页(PG_reserved标志置位) 内核动态分配页 进程内核态堆栈页临时锁

7、定页(PG_locked标志置位) 内存锁定页(在线性区中且VM_LOCKED标志置位)不允许也无需回收可交换页用户态地址空间的匿名页tmpfs文件系统的映射页(如IPC共享内存的页)将页的内容保存在交换区可同步页用户态地址空间的映射页存有磁盘文件数据且在页高速缓存中的页 块设备缓冲区页 某些磁盘高速缓存的页(如索引节点高速缓存)必要时,与磁盘映 像同步这些页可丢弃页内存高速缓存中的未使用页(如slab分配器高速缓存)目录项高速缓存的未使用页无需操作所谓“映射页”是指该页映射了一个文件的某个部分,属于可交换页。映射页差不多都是可同步的:为回收页框,内核必须检查页是否为脏,而且必要时将页的内容写

8、到相应的磁盘 文件中1。共享页框为属于多个用户态空间的映射页。Linux 2.4.20版本的页面回收机制仅对 非共享页框进行了回收,因为共享页框数量比较少,但是对于资源非常有限的嵌入式设备却 是非常宝贵的。所以在嵌入式设备上对共享页框的回收也是非常必要的。属于进程用户态地址空间或页高速缓存的所有页被分成两组:活动链表与非活动链表。 前一个链表用于存放最近被访问过的页;后面的则存放有一段时间没有被访问过的页。因此, 属于非活动链表中的页是页面回收的候选页。内核提供了两个字段判断待回收页是共享的还是非共享的:count和mapping。count字段 存放引用页框的页表项数目。共享页的count字

9、段大于1(page-buffers字段为NULL)或大于2(page-buffers字段不为NULL)。mapping字段用来确定页是映射的还是匿名的,同时 mapping字段指向对应文件的address_space对象。只有当mapping字段非空时,才表示此页为 映射页。若待回收页为共享页,则内核应该能够快速定位指向同一页框的所有页表项,这个过程 叫做反向映射。内核通过将页框所在的线性区存放在同一个双向循环链表中的方法将引用同 一个页框的所有页链接起来。address_space对象的i_mmap成员为私有线性区双向链表的链表 头,通过 vma-vm_next_share 指针指向下一个

10、私有线性区; address_space 对象的 i_mmap_shared成员为共享线性区双向链表的链表头,通过vma-vm_next_share指针指向下 一个共享线性区。通过存放页框的线性区可以找到页框的页表信息,删除该页框的页表信息, 刷新页高速缓存以及TLB缓存,并将page的count字段减1。由此实现将共享页从共享它的用 户态进程空间释放,使此页在后面的操作中可以被回收。图2为共享页面的反向映射。图2 共享页面的反向映射通过实验证明,对共享页进行回收可以在页面回收的过程中多回收的内存空间,这 个空间对于嵌入式设备是非常宝贵的资源,同时也证明了此优化功能非常显著。4. 结束语随着嵌

11、入式设备的广泛应用,嵌入式Linux操作系统逐渐成为当前的热门话题,对嵌入 式Linux内核的优化还需要进一步更深入的研究。本文从主题嵌入式Linux的页面回收机制的 分析和研究入手,讨论了当前版本中存在的问题,并给出了优化和实现的方法,在此基础上 继续研究,可以更好的优化嵌入式Linux的性能,使嵌入式设备在有限的资源下发挥最好的 性能。参考文献1 Daniel P. Bovet & Marco Cesati深入理解Linux内核M.陈莉君 张琼声 张宏伟北京:中国电力出 版社,2007年2 肖竞华,陈岚Linux内存管理实现的分析与研究J计算机技术与发展,2007,第17卷(第2期):18

12、7-1893 陈绮Linux内存管理的主要数据结构分析J福建电脑,2004,第1期:13-14 4 王靖Linux内存和地址空间管理J软件世界,2007,第6期:55-585 聂岚,卢正鼎,董俊,魏东林一种改进的Linux内存分配机制J华中科技大学学报,2002,第30卷(第7期):45-47Optimization of page reclamation in Embedded LinuxDu Hang, Xu HuiminDepartment of Communication and Information System, Beijing University of Posts andTe

13、lecommunications, Beijing, China (100876)AbstractEmbedded device is widely used in different areas now, and most of the RTOS in embedded devices isLinux. The performance of the Linux system affects the performance of the embedded device a lot. Memory is the most important resource which is managed b

14、y Linux Kernel, so memory management system is the most important part of an operating system. Page reclamation, as the crucial part of memory management, is a key aspect which affects the performance. This paper provides an optimization method of the page reclamation via researching the module of the memory management in embedded Linux system, in order to meets the features of the embedded system. This optimization can be used in embedded devices which use Linux 2.4 as their operating system.Keywords: Linux Kernel; Memory Management; Page Reclamation

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1