首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式操作系统内存管理技术的分析与比较(3)

嵌入式操作系统内存管理技术的分析与比较(3)

2.4 其他技术
  (1)按需页面调度
  由于在系统中虚拟内存远大于物理内存,因此系统必须对内存使用格外注意。一种节约物理内存使用的方法是,只加载当前运行程序使用的虚拟内存所对应的物理内存,这种方法称为按需页面调度。当一个进程试图访问一个不在当前内存中的虚拟内存地址时,系统这时会重新从磁盘上将该区域加载到内存中去。桌面操作系统很久以来一直使用这一技术,来加快系统启动速度和优化程序运行效率,WinCE也不例外。
  WinCE中,可以通过使用Config.bib对整个系统的按需页面调度进行设置,或通过LoadDriver等函数对单个DLL的按需页面调度进行设置。Symbian操作系统却不支持这一技术。这主要是由于系统本身内存太小,采用这一技术会带来性能大幅下降。不过随着手机硬件的发展,在Symbian OS v9.3以后,系统开始支持按需页面调度。这一技术优化了内存使用,在需要时加载只读代码,从而实现了对RAM的更高使用效率。这让用户可以更快地安装应用程序,并同时保持多个应用程序的开放状态。
  (2)内存碎片整理
  在一个实时系统中,连续的页面请求可能会带来性能的下降。这是由于在小对象(小于1 KB的数据类型)对内存的频繁的动态申请和释放过程中,由于释放后留下的空洞不够新对象分配,导致不连续的内存可用空间无法被应用程序获得,造成可用内存迅速耗尽。这种内存空洞也叫内存碎片。操作系统可能会对这种情况作一定程度的优化,但是由于将内存可用空间压缩而导致的效率负担,并不是所有的操作系统都会对此优化。
  得益于Symbian操作系统本身优化的内存管理和高度受限的内存使用原则,内存碎片其实并不会对手机系统的性能和内存使用率造成明显影响,因此早期的Symbian版本并不支持内存碎片整理,只提供简单的手动内存压缩功能。Symbian 9.5之所以引入“自动”内存碎片整理,一个重要的原因是:目前手机终端的内存容量变得越来越大,内存的能耗已经不容忽视。在新版本中,借助内存碎片整理,可以关闭连续的空闲物理内存块以节约能耗,当然它同时也提供了其他在主流操作系统中体现的改进一一更高效的内存访问和更大的空闲可用内存。在WinCE中,虽然不存在自动内存碎片处理,但是微软推荐使用VirtualAlloc、LocalAlloc、HeapAlloc等函数直接操作虚拟内存页,本地堆和分离堆进行内存分配操作,而不是使用如malloc、new这类会导致内存泄漏或异常的操作。
  3 小 结
  Symbian与WinCE在内存管理模块的设计上各有优劣,这主要是由于两个操作系统在设计之初的理念不同。Symbian设计之初是以高度受限的内存为原则进行设计,在硬件发展较为落后的时期取得了巨大的成功,但这也给第三方软件开发者带来很多困难。WinCE设计之初既要保持与Windows其他系统在编程接口上的兼容,又要尽可能地提高内存使用效率,这样不免对性能带来一定程度的影响。随着硬件的发展,智能手机的处理器速度和内存大小都有了很大提高,WinCE由于对第三方开发者的友好性,其发展仍然不可限量。
继承事业,薪火相传
返回列表