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

发布者:科技舞者最新更新时间:2010-01-18 来源: 单片机与嵌入式系统应用关键字:嵌入式操作系统  内存管理  WinCE  Symbian 手机看文章 扫描二维码
随时随地手机看文章

  1 概 述

  内存管理是操作系统的中心任务之一。内存管理模块通常是操作系统内核的一部分,其主要任务是为操作系统内核和各执行程序组织内存,跟踪当前内存使用状况,在需要时为进程分配内存,使用完毕后释放并回收内存。智能手机操作系统作为嵌入式操作系统的一种,较之普通桌面型操作系统,其内存管理有着独特之处:受硬件成本、设备体积等因素制约,内存容量一般相当有限,需要高效地使用;电源管理尤为重要,一次充电要保证数小时以上的工作时间;手持设备内程序一般几天甚至几个月不停运行,系统稳定性要求高,需保证用户数据的安全。此外,与传统的嵌入式实时操作系统相比,如Vx-Works,μClinux等,智能手机嵌入式操作系统还是一个开放性的操作系统,这意味着几乎所有的智能手机嵌入式操作系统都允许用户安装第三方程序。因此,在操作系统设计时还要综合考虑编程的易用性及接口的模块化,以适应终端用户、制造商、操作系统软件开发者和第三方软件开发者的不同需求。

  1.1 Symbian操作系统

  Symbian操作系统是智能手机市场中的主要成员,其市场份额超过70%。该操作系统由英国Symbian公司负责研发和维护,目前该公司由Nokia、SonyErisson、Panaso-nic、Samsung等公司共同所有。Symbian操作系统的前身是EPOC,这是一个多任务的32位软实时操作系统。Symbian在设计之初就是专门针对高度内存受限的系统的,因此其在内存使用和电源管理上具有很多优势。Symbian操作系统具有完善的软件开发包,供第三方应用程序开发使用。目前最新版本的Symbian操作系统为Symbian OS 9.5。

  1.2 WindOWS Mobile操作系统

  Windows Mobile是微软为手持设备推出的“移动版Windows”。使用Windows Mobile操作系统的设备主要有手机、PDA、随身音乐播放器等。该操作系统是基于Windows CE内核的一种嵌入式操作系统。由于与桌面Windows操作系统的兼容性,第三方开发者可以很方便地为Windows CE开发程序,但与桌面Windows开发仍存在较大区别。目前常用版本为Windows Mobile 6.1,最新版本6.5,均基于Windows CE 5.2内核。为表述一致,下文中将Windows Mobile简称为WinCE。

  2 内存管理技术分析与比较

  2.1 整体架构

  Symbian操作系统诞生之初,是针对掌上型资源高度受限设备开发的。为了追求极致的性能和最小的资源消耗,它从操作系统内核到编程框架都进行了严格的优化,甚至对C++的不少基本机制也进行了大刀阔斧的革新。因此软件开发者和厂商需要掌握新的Symlbian C++语法及新的编程接口。Symbian操作系统兼容性较差,一般只支持ARM系列处理器。

  WinCE系统在设计之初就充分考虑到对桌面操作系统组件和编程接口的兼容性,这样给程序开发者带来很大益处,并且方便厂商进行设备升级及驱动维护。WinCE支持多种CPU,如ARM、MIPS、SH4、x86等。因此其在内存管理模块设计上的兼容性和接口的规范性更好。Symbian相对于WinCE的优势在于其针对指定处理器设计的内存管理模块更加高效,但是这也以牺牲兼容性为代价。出于对电源管理的考虑,Symbian系统的设备CPU频率普遍较WinCE要低,一般为100~300 MHz(WinCE是300~800 MHz)。

  2.2 ROM与RAM

  (1)RAM

  RAM全称为随机存取存储器,通常作为操作系统或其他正在运行的程序的临时存储介质,速度较快,但是当电源关闭时存储的数据会丢失。

  WinCE中RAM被分成两块区域,对象存储和程序区(系统堆)。对象存储可以被看作类似一个永久的虚拟RAM磁盘。在Pocket PC上,当显示屏关闭后,系统并没有真正断电,而是进入低功耗的睡眠状态(由主电池来供电)。当按下Reset按钮后,Windows CE内核在RAM中寻找最近一次创建的对象存储,如果找到,就用这个对象存储重新启动。

  RAM的另一个区域是程序区。这个区域就像PC机的RAM一样。它存放所运行程序的堆和栈的空间。对象存储和程序区的界限是可移动的。在低内存的情况下,系统会请求用户把部分可用的存储对象空间提供给运行程序使用,以满足程序运行时对RAM的需要。在Symbian操作系统中,RAM不存在类似于对象存储的区域,其RAM全部用于运行程序的临时执行和数据存储器。因此一般Symbian操作系统上RAM大小为7~30 MB,小于winCE中的32~128 MB。

  (2)ROM

  ROM是只读存储器。在PC机上,ROM用来存储BIOS,通常是64~128 KB。在WinCE系统中,ROM用来存储整个操作系统以及和OS绑定的应用程序。Symbian系统中ROM功能类似,也是用来存储系统驱动程序及系统DLL和配置文件。对ROM进行写入需要指定的设备,普通用户无法对ROM中的数据进行操作。由于ROM中的代码都是经过特殊编译,去除了重定位代码段,因此可以在ROM上直接执行(excute in place),不用加载到RAM中,从而提高了启动速度并节省了RAM资源。

  2.3 MMU

  作为现代操作系统的一种,智能手机操作系统具有强大而高效的MMU,在这一点不同于其他实时嵌入式操作系统,如μC/OS-II和μClinux。通过MMU提供的内存映射和数据保护,可以提高操作系统的运行效率和安全性。MMU运行于CPU和系统总线之间,负责在虚拟地址和物理地址之间进行转换,在任一次内存访问中都会进行MMU的地址查找。

  (1)虚拟内存

  Windows CE是32位操作系统,支持4 GB的虚拟地址空间。高2 GB是系统内存空间,用来存储相应的系统数据。低2 GB是用户空间。所有的应用程序均有2GB的虚拟地址,但是每个应用程序的内存空间都是受保护的,其他应用程序不能访问。从最低的虚拟地址空间开始,分为33个slot,每个slot为32 MB。每个slot被分配为当前运行的进程。slot 0中存放当前激活的进程。当WinCE在进程间切换时,它就重新映射地址空间,把原进程移出,新进程移进slot 0。这个任务是通过操作微处理器的页转换表来迅速完成的。

  WinCE定义了4种内存状态:normal、limited、low、critical。这些状态的划分主要取决于当前可用的内存大小。在WinCE中,当出现内存不足的情况时,线程首先被挂起。这时系统如果没有可用的物理RAM,需要栈空间的线程就会被挂起。系统首先发送WM_HIBERNATE消息,该消息会向所有的进程请求。它们在不破坏各自内在状态的情况下尽量释放内存,比如释放GDI对象、缓冲数据等,然后限制内存申请的请求。如果在给定的一小段时间内,这个内存需求不能得到响应,就会弹出系统异常。在低内存情况下不应该尝试使用大量的栈空间。而在Symbian操作系统中,系统能运行的程序数量是由实际内存大小决定的,而不限于32个。当内存不足时,运行新程序将会收到内存不足的警告,并终止进程。

  (2)虚拟地址映射

  MMU一般将页面分成4 KB大小的页面。由于CPU不同,页面大小也可以是1 KB或其他大小。内核使用MMU,将物理内存映射到块的虚拟地址范围内。WinCE与Symbian的虚拟地址映射图如图1所示,其中WinCE内核表现为NK.exe进程。

  在ARMv5中,最高层的页表有4 096个条目,每个条目4字节,因此整个目录就有16 KB。由于WinCE支持多种不同的CPU,CPU设计结构不同页目录也不同,但是计算方法与ARMv5类似。WinCE首先直接给每个进程分配一个不同的页表,在进程切换中直接将不同进程的页表写入MMU的基寄存器TTBR中来实现映射。而Sym-bian系统认为每个进程分配16 KB页表会造成内存的浪费,因此采用了另一种管理地址映射的方法。

  该模型针对ARMv5结构设计,被称为移动内存模型。其核心思想是对每个进程都提供同样的虚拟地址空间,但是被保护的内存页面却不一样。在页面切换中,首先将原有进程的内存移出执行地址空间,使其在用户模式下不能访问。接着将新进程的数据移入执行地址,并使其可以访问。这一思想是在内存模型上层通过Chunk实现的。通过ARMv5中提供的页表访问权限和域概念,通过改变MMU中寄存器指向的域,达到进程间保护和内存映射。这种设计方法带来了内核层的低内存消耗,但是虽然在内核层的安全性和内存使用效率上有所改善,却对其他进程的运行带来一定影响。当映射到不同的虚拟地址空间,所有被修改的数据都要重新从主存中载入,并且缓存中的数据因为已经被丢弃,必须重新载入。因此,该模式下的进程上下文中很大一部分时间消耗在缓存的刷新上,一般情况下其速度是线程切换(同进程)的1/100左右。尽管采取了其他措施,但是没有从根本上改变运行时间。

  在最新的ARMv6中,Symbian引入了多重内存模型。该模型兼容性更强,并可在主流处理器Intel x86和Re-nesas SuperH上使用。该模型建立在与设备和操作系统无关的基础上,利用ARMv6中的应用空间辨识器(ASID),并通过物理标记缓存技术保证了在虚拟地址和物理地址间多重映射的正确性,很好地解决了移动内存模型中的缓存刷新问题。

  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由于对第三方开发者的友好性,其发展仍然不可限量。

关键字:嵌入式操作系统  内存管理  WinCE  Symbian 引用地址:嵌入式操作系统内存管理技术的分析与比较

上一篇:基于S3C2410A的嵌入式系统的U-Boot移植
下一篇:linux操作系统下的进程通信的设计

推荐阅读最新更新时间:2024-05-02 20:59

基于ARM的嵌入式操作系统该如何设计
嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。 Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Token Ring(令牌环网)、光纤甚至卫星的支持。
[单片机]
基于ARM的<font color='red'>嵌入式操作系统</font>该如何设计
基于WinCE的智能车载仪表设计
       设计一款基于WinCE操作系统的智能车载仪表,通过CAN总线接收汽车各个部件的ECU的信息,并将其显示在液晶显示屏中。以ARM9内核的S3C2440微处理器为核心,设计了外围硬件以及CAN总线在WinCE中的底层驱动和上位应用程序。   引言   随着高性能电子显示技术的发展,汽车仪表电子化的程度越来越高。国内外已开发出了多功能全电子显示仪表、平视显示仪表、汽车导航系统、行车记录仪等高技术产品。未来,车用电子化嵌入式仪表具有以下优点:提供大量复杂的信息,使汽车的电子控制程度越来越高;满足小型、轻量化的要求,使有限的驾驶空间更人性化;高精度和高可靠性实现汽车仪表的电子化,降低了故障的发生率;设有在线故障诊断系统,一
[嵌入式]
ARM的嵌入式操作系统概述及汇总
嵌入式操作系统(Embedded Operation System,EOS)是指用于嵌入式系统的操作系统。嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层,如下图所示。嵌入式操作系统是负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能,是一种用途广泛的系统软件。 嵌入式LINUX 嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。 Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第
[单片机]
ARM的<font color='red'>嵌入式操作系统</font>概述及汇总
基于嵌入式WinCE5.0的无线监控系统
0 引 言 传统的视频监控系统主要以模拟信号监控系统和基于插卡的数字监控系统为主。其中模拟信号监控系统布线工程量大,要耗费大量的存储介质,查询取证也十分繁琐;基于插卡的数字监控系统是由1台PC机加图像采集卡完成的,系统的成本高,而且PC机需要有人值守,无法在恶劣环境下使用。在视频监控领域中,如何使信息传输得更快,更稳定,距离更远,系统的成本、体积、功耗更低等问题是摆在当前技术研发人员面前的首要问题。 在此提出一种基于嵌入式Windows CE5.O的无线视频监控系统。解决了传统视频监控系统成本高、体积大、传输距离有限、功耗大、安装不方便等问题。该系统的设计将为无线视频监控提供一种新的思路、方法和技术路线;在安防、远程教育、远程视频
[单片机]
基于嵌入式<font color='red'>WinCE</font>5.0的无线监控系统
基于微处理器S3C2440和WinCE嵌入式实时操作系统的视频数据采集
随着嵌入式技术的不断发展,各种嵌入式微处理器和控制器不断出现,并广泛应用于工控、通信、 PDA、安保等领域。基于ARM920t内核的嵌入式微处理器S3C2440,以其良好的数据处理能力、低功耗、小体积、支持多种嵌入式操作系统(如 WinCE、Linux)、集成多种外设(如I2C控制器、LCD控制器等)等优点,广泛应用于手持设备等。WinCE操作系统具有内核可剪裁、实时性好、支持多种通信、模块化设计、具有丰富的API等特点,广泛用于嵌入式实时操作系统。这里提出的嵌入式图像数据采集系统是某“纳米技术与微系统”实验室开发的“嵌入式传感测控系统”中实现图像采集功能的子系统,该系统是以S3C2440为硬件核心,以WinCE为软件平台,能实时
[单片机]
基于微处理器S3C2440和<font color='red'>WinCE</font>嵌入式实时操作系统的视频数据采集
μC/OSII嵌入式操作系统在机电控制中的应用
   引言   今天,嵌入式系统已渗透到日常生活的方方面面,带来的工业年产值已超过1万亿美元,在工业控制、消费电子等领域的应用范围不断扩大,而机电控制是嵌入式系统技术的一个典型应用,采用嵌入式的机器人、SONY 机器狗及1997年美国发射的“索纳杰”火星车就是经典的实例。就嵌入式系统的组成、特点,开发所采用的主流软件平台、硬件平台作详细的介绍,并通过Stewart平台专用伺服控制器的设计,介绍了嵌入式技术在机电控制系统中的应用及具体实现。    1 嵌入式系统   嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。由于嵌入式系统具有微
[嵌入式]
ARM学习之内存管理单元(MMU)
今天在学习MMU时,学到了不少知识。现总结如下,一是加深印象;二是写出来希望能和大家交流学习。 1.MMU是什么? 答:MMU是内存管理单元。如果MMU开启的话,它会把CPU发出的虚拟地址转化为物理地址,然后对实际的物理地址进行相应的读写操作。当然,它还有其他的作用,包括内存权限检查、Cache等。 2.虚拟地址是什么?为什么会出现虚拟地址? 答:虚拟地址是CPU所“看到”的地址。它的所有与地址相关的操作用到的都是虚拟地址。那为什么会出现虚拟地址呢?我想,可能是这个原因:以前,还没有操作系统的时候,只有一个程序在CPU上跑,它占据了所有的内存空间(和现在的裸板程序差不多),只要程序所需要的的内存空间小于实际物理内存,那CPU就可以
[单片机]
嵌入式操作系统uCLinux
作者Email: cuiwj181@sohu.com 摘要: 本文将分析嵌入式操作系统uClinux的内核结构、、内存管理、多进程处理、针对实时性的解决方案和开发环境,先对uCLinux有一个深刻的认识,将有利于今后进一步研究开发。 关键词: uCLinux,内存管理,多进程处理,RTLinux,开发环境 1 引言 嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统。比如ARM7TDMI内核,可以嵌入Nucleus、VxWorks、uClinux等操作系统。在此主要对uClinux的进行介绍,嵌入式uClinux操作系统主要有三个基本部分组成:引导程序、uClinux内核(由
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved