一种优化的嵌入式Linux页面回收机制.doc_第1页
一种优化的嵌入式Linux页面回收机制.doc_第2页
一种优化的嵌入式Linux页面回收机制.doc_第3页
一种优化的嵌入式Linux页面回收机制.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

精品论文一种优化的嵌入式 linux 页面回收机制杜航,徐惠民 北京邮电大学信息与通信工程学院, 北京 (100876) e-mail: 摘要:当前,嵌入式设备在各个领域中应用广泛,其运行的实时操作系统多以嵌入式 linux操作系统为主,因此嵌入式 linux 操作系统的性能直接影响到嵌入式设备的性能。内存是linux 内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分。页面 回收机制作为内存管理的重要组成部分,对整个内存管理的性能其关键作用。本文通过研究嵌入式 linux 内核的内存管理模块,分析其工作机制,提出现有内存管理机制存在的问题, 并通过对页面回收机制的优化,实现了一种更适合于嵌入式设备的内存管理机制。此机制适合于以 linux 2.4 作为操作系统的嵌入式设备。 关键词:linux 内核;内存管理;页面回收中图分类号:tp316.811.引 言在当今数字信息技术、网络技术高速发展与发达的后 pc 时代,嵌入式系统无处不在,并 将不断涌现出新的嵌入式应用系统。传统的操作系统软件很难有效地支持嵌入式应用系统的 快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有重 大意义,是十分必要的。linux 操作系统, 由于其开放源代码、高稳定性和低成本等特性, 非常适合于嵌入式系 统的开发, 成为了嵌入式领域里发展最快的操作系统。内存作为最重要的系统资源,其分配和 释放策略对系统的运行效率起着至关重要的作用。系统内核和所有进程通过共享有限的物理 内存来运行,一个系统的高效性与稳定性往往取决于它内存管理机制。因此,一个高效的内存 管理系统不仅要能够有效地管理系统内存,减少频繁分配和回收内存而导致的内存碎片,还要 尽量提高分配和回收的速度来提高系统的运行效率。此外,内存管理系统还应该保证内存分 配和回收的公平性2。页面回收机制作为内存管理的重要部分,对整个内存管理机制性能的影响起至关重要的 作用。本文针对linux 2.4.20内核中的页面回收机制进行优化,使其更适应嵌入式设备的需 求。2.嵌入式linux页面回收机制缺陷的原因分析嵌入式linux页面回收机制缺陷归根到底源于标准linux。由于大多数内核开发者都是基 于x86平台体系结构,同时由于嵌入式设备资源的有限性,所以导致现有linux页面回收机制 的一些不足,有待进一步对其进行研究和改进。归纳一下,linux页面回收机制的缺陷主要 有以下两方面:1)触发页面回收进程的阈值偏低,导致在可用内存很少的时候才触发页面回收。2)对于映射到用户态地址空间的共享页框没有进行回收。3.嵌入式linux页面回收机制的改进方案及实现3.1 对于页面回收进程触发阈值的优化对于每个内存管理区zone,都存在三个阈值pages_high,pages_low和pages_min,每次页 框请求时,即调用 alloc_pages()时,都要将空闲页框个数与一个阈值作比较,以判断当前- 5 -可用内存数量是否过低需要触发页面回收进程。以下是三个阈值的作用:1)pages_high:回收页框使用的上界。当空闲页框数大于此阈值时,挂起kswapd进程。2)pages_low:回收页框使用的下界。当空闲页框数小于此阈值时,唤醒kswapd进程。3)pages_min:管理区中保留也的数目。当空闲页框小于此阈值时,直接调用页面回 收函数balance_classzone()。图1显示了在页面申请中此三个阈值的作用。图1 页面回收被触发的阈值条件若经过页面回收之后还是不能成功分配页框,则会调用out_of_memory()函数,该函数 选择系统中的一个进程,强行删除它并释放页框。若此进程为关键进程则会导致系统重启。 为了避免系统重启发生的几率,将内存管理区的三个阈值扩大为原来的两倍,即提前进行页 面回收。经过长期测试发现,系统因内存不足而重启的几率明显下降。3.2 回收共享页框的实现页面回收机制按照页框所含内容,以不同的方式处理页框。我们将它们区分成:不可回 收页、可交换页、可同步页和可丢弃页,如表1所示1。表1 页面回收处理的页框类型页类型说明回收操作不可回收页空闲页(包括在伙伴系统列表中)保留页(pg_reserved标志置位) 内核动态分配页 进程内核态堆栈页临时锁定页(pg_locked标志置位) 内存锁定页(在线性区中且vm_locked标志置位)不允许也无需回收可交换页用户态地址空间的匿名页tmpfs文件系统的映射页(如ipc共享内存的页)将页的内容保存在交换区可同步页用户态地址空间的映射页存有磁盘文件数据且在页高速缓存中的页 块设备缓冲区页 某些磁盘高速缓存的页(如索引节点高速缓存)必要时,与磁盘映 像同步这些页可丢弃页内存高速缓存中的未使用页(如slab分配器高速缓存)目录项高速缓存的未使用页无需操作所谓“映射页”是指该页映射了一个文件的某个部分,属于可交换页。映射页差不多都是可同步的:为回收页框,内核必须检查页是否为脏,而且必要时将页的内容写到相应的磁盘 文件中1。共享页框为属于多个用户态空间的映射页。linux 2.4.20版本的页面回收机制仅对 非共享页框进行了回收,因为共享页框数量比较少,但是对于资源非常有限的嵌入式设备却 是非常宝贵的。所以在嵌入式设备上对共享页框的回收也是非常必要的。属于进程用户态地址空间或页高速缓存的所有页被分成两组:活动链表与非活动链表。 前一个链表用于存放最近被访问过的页;后面的则存放有一段时间没有被访问过的页。因此, 属于非活动链表中的页是页面回收的候选页。内核提供了两个字段判断待回收页是共享的还是非共享的:count和mapping。count字段 存放引用页框的页表项数目。共享页的count字段大于1(page-buffers字段为null)或大于2(page-buffers字段不为null)。mapping字段用来确定页是映射的还是匿名的,同时 mapping字段指向对应文件的address_space对象。只有当mapping字段非空时,才表示此页为 映射页。若待回收页为共享页,则内核应该能够快速定位指向同一页框的所有页表项,这个过程 叫做反向映射。内核通过将页框所在的线性区存放在同一个双向循环链表中的方法将引用同 一个页框的所有页链接起来。address_space对象的i_mmap成员为私有线性区双向链表的链表 头,通过 vma-vm_next_share 指针指向下一个 私有线性区; address_space 对象的 i_mmap_shared成员为共享线性区双向链表的链表头,通过vma-vm_next_share指针指向下 一个共享线性区。通过存放页框的线性区可以找到页框的页表信息,删除该页框的页表信息, 刷新页高速缓存以及tlb缓存,并将page的count字段减1。由此实现将共享页从共享它的用 户态进程空间释放,使此页在后面的操作中可以被回收。图2为共享页面的反向映射。图2 共享页面的反向映射通过实验证明,对共享页进行回收可以在页面回收的过程中多回收的内存空间,这 个空间对于嵌入式设备是非常宝贵的资源,同时也证明了此优化功能非常显著。4. 结束语随着嵌入式设备的广泛应用,嵌入式linux操作系统逐渐成为当前的热门话题,对嵌入 式linux内核的优化还需要进一步更深入的研究。本文从主题嵌入式linux的页面回收机制的 分析和研究入手,讨论了当前版本中存在的问题,并给出了优化和实现的方法,在此基础上 继续研究,可以更好的优化嵌入式linux的性能,使嵌入式设备在有限的资源下发挥最好的 性能。参考文献1 daniel p. bovet & marco cesati深入理解linux内核m.陈莉君 张琼声 张宏伟北京:中国电力出 版社,2007年2 肖竞华,陈岚linux内存管理实现的分析与研究j计算机技术与发展,2007,第17卷(第2期):187-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 andtelecommunications, 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 by 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

温馨提示

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

评论

0/150

提交评论