电子产品 |
|
| 按行业筛选 |
|
|
| 按产品筛选 |
|
|
| |
查看本类全部文章 |
| |
|
|
|
克服虚拟化技术在移动设备应用中的局限性 |
|
作者:Open Kernel Labs Gernot Heiser |
|
尽管对于嵌入式软件开发商和OEM来说虚拟化技术具有很大的吸引力,然而由于虚拟化平台架构固有的局限,这种技术的采用可能陷入停顿。本文将了解这种局限,以及他们如何通过不同的方法来构建一种虚拟化的嵌入式软件克服这些局限。
在过去五年中,虚拟化技术从一种陌生的技术变成了企业服务器和桌面应用的一种关键技术。最近,虚拟化技术逐渐成为嵌入式开发中的关键角色。推动这种趋势的领域包括移动电话、电信和网络基础设施以及安全嵌入式计算。在所有这些领域,开发商和集成商都考虑采用虚拟化技术来提高可靠性和安全性,以简化遗留代码的更新与维护,同时针对单CPU的多操作系统处理器分割以及多核处理器和多个CPU之间的运行管理进行硬件利用率优化。
尽管开发商和OEM对虚拟化技术显示出明显的兴趣,但是该技术的采用可能会因为虚拟化平台架构本身的局限性而停止。本文将了解这些局限性,以及如何通过不同的方法构建嵌入式虚拟化软件来克服这些局限。
软件复杂度管理
由于嵌入式软件的规模和复杂度急剧增加,在嵌入式系统中采用虚拟化技术的呼声日益高涨。过去十年,嵌入式软件的规模每年倍增,目前嵌入式系统的源代码达到数千万行,几乎等同于(甚至很多时候超过)企业程序的源代码。嵌入式软件固有的复杂性、多线程以及延时敏感性使管理和维护如此大规模的代码变得相当复杂。
嵌入式虚拟化技术的倡导者们将这种现状以及不断增长的复杂度誉为采用虚拟化平台的主要动力。然而,虚拟化技术并不足以解决嵌入式软件开发的主要挑战。尽管把软件组件分割和隔离到不同的虚拟机(VM)容器可以提高可靠性,但由于VM的粒度过于粗糙而未能对蜕变复杂度的改善有实质变化。运行在不同VM上的客户操作系统和主应用程序实际上会提升整体复杂度,尤其是当虚拟化平台软件对嵌入式系统架构的理解和整合不足,以及当嵌入式软件工程实践不是那么协调的时候。
图1a:具不透明性的全VM轮叫调度(Round Robin Scheduling)。
图1b:透明的分级客户任务以及全局调度。 隔离与整合的对比
嵌入式应用从虚拟化技术获得的最直接好处是针对客户操作系统(如Linux、WinCE、RTOS等)以及其他运行环境(自行设计的内核、设备驱动程序等)采取严格的硬件隔离,从而改善可靠性和安全性。这种隔离避免了在智能设备的独立功能区中(如移动电话中的基带和用户界面代码)代码和数据的非故意破坏,而且也阻止终端用户通过下载的代码进行恶意访问。
然而,虚拟化技术为嵌入式应用所带来的稳健性与传统的嵌入式设计经验相悖。传统的设计经验强调在多个嵌入式软件组件之间有效地共享数据,但是将代码严格地分割到VM时,这种数据共享将被阻碍或被禁止。而且,在各种不同的虚拟机上运行的代码中由于没有高效的通信,虚拟化技术将会使嵌入式系统的性能降低到无法忍受的水平,从而影响OEM和第三方软件的整合。
调度的不透明性
嵌入式系统软件涉及复杂的多进程和多线程程序组合。无论是移动系统还是静态系统都需要对数以百计的任务进行调度和同步;甚至处于睡眠状态或暂停状态的设备都自诩有数十个线程在运行。而且,与众多桌面软件不同的是,嵌入式应用程序会涉及到大量的优先级划分方案和规则(例如等级单调分析)。设计、调试和调整优先级、以及执行策略和实时事件响应涉及到整个系统的活动,这些活动需要细致的可见度和控制。
能量管理
对嵌入式系统的能耗优化源于特定设计领域的需求:在类似手机和媒体播放器这些移动设备中,能量管理可以延长电池使用寿命,并帮助OEM的产品在竞争激烈的市场上实现差异化。在诸如网络设备(路由器、网关、安全设备)以及消费电子设备(电视机、DVR、IP电话以及耐用产品)等固定设备中,能量管理能帮助降低用电费用以满足节能需求。
在智能设备中的能量管理涉及硬件和软件方面的技术。通常这涉及到操作系统内核降低用户交互动作(减少键盘/键区和其他输入事件)以及静态程序状态(等待外部事件或在执行中的长暂停)。当系统进入到这样的空闲状态时,能量管理软件可以选择关断耗电的设备,例如LCD显示器、降低CPU的运行频率和总线时钟,并降低工作电压。相反的情况下,同样的软件必须能提高性能以满足对新事件或用户输入的服务。
有效的能量管理需要在操作系统、设备驱动程序以及甚至应用软件之间广泛的紧密配合,是一个全面的规则。然而,VM下文调度的不透明性使能量管理不能有效实现:处于睡眠状态的客户操作系统对其他的VM缺乏可见性,因而不能做出能量管理决策。相应地,管理程序缺乏对所管理的客户操作系统内部状态的充分了解,因此不能在虚拟化平台层面进行能量管理。
信息流控制
嵌入式设计与虚拟化技术之间的失配在本文中多次提到,对于上述提到的领域,这个问题适用于VM中的信息流和执行控制。嵌入式系统通常需要在全局共享数据,并对业务进行同步,而虚拟化强调在本地VM层面的划分。而且,传统的嵌入式进程间以及处理器之间的通信机制(IPC)倾向于避开正式的安全保护措施,以降低延时和提高吞吐量。
对嵌入式系统而言,为各种用户、角色和内容拥有者提供精细粒度的访问和安全策略的新兴需求似乎回避了虚拟化技术和严格分割的强制要求。然而,管理程序提供的跨VM通信模式是基于虚拟网络设备的。这种方案既不能满足嵌入式设计的性能要求,也不能满足通信特定限制的需要(某个子系统可能允许与某些对等的子系统进行通信,而不能与其他子系统进行通信)。
面向安全的设计
随着嵌入式系统越来越多地在对任务和使用寿命具有决定性的功能中部署,因此与它们正确运行的相关问题变得极为重要。大的软件系统都带有其固有的缺陷,降低故障可能性的一般方法是使对安全或安保具决定性的软件保持最小。系统的这个关键部分被称为它的可信任运算基础(TCB)。最小化TCB代码对于确保安全来说非常重要。
传统的管理程序不能支持这种必须的要求。管理程序是TCB的固有的部分,包含所有硬件设备的驱动程序,因而成为TCB的一部分。或者,真实设备的驱动程序通常由一个运行在特别的、可信任的VM(经常被称为“Dom0”)中的驱动型操作系统所支持,而其全面的作用域必将增加TCB代码。与没有虚拟化技术的设计相比,这种方法增加了TCB,其安全性也相应降低。
构建微核技术
为实现嵌入式虚拟化技术的这种高要求,我们只需看看无处不在的微核技术。微核是一种最小的操作系统内核,只提供实现关键服务必需的基本结构,包括解决空间管理,线程管理/调度,以及进程间通信。对于在用户和内核模式运行之间的系统和CPU来说,微核是内核模式中系统执行的唯一部分。操作系统级的服务是由用户模式后台程序或服务器程序(微微服务器)支持的设备驱动程序、协议堆栈、文件系统、用户接口等提供。
微核是在上世纪70年代出现的,是作为大型的单操作系统核的一种替代。与具有系统调用接口的通用分层操作系统架构不同的是,微核通常具有一种平行结构,由IPC连接应用程序和皮可服务器程序(pico-server)。在推出以来的三十多年中微核取得一些商业成就,在企业级和嵌入式设备的应用中扮演着高级操作系统的基础。同时,微核也成为很多学术机构的研究焦点。
图2a:不透明的调度无法建立全局能量使用。
图2b:基于微核的管理程序能够调解全局能量管理。
微核技术采用虚拟化技术的额外好处
微核技术为管理程序设计带来额外的好处,特别是在安全和质量保证方面。它们的小型TCB易于满足安全形式认证,对于需要严格认证的对任务和使用寿命具有决定性的关键应用来说也是如此。
同样的特点使得微核和基于微核的管理程序易于进行形式验证,即功能正确性的数学证明。管理程序实现和执行的正确性的认证能力使得这种软件技术可以与底层硬件平等,开拓了虚拟化技术更广阔的应用天地。
本文小结
本文揭示了被动的管理程序如何难以克服嵌入式软件工程师每天面临的挑战。要满足真实的嵌入式设计需求可以简单地在虚拟化技术提供的实质隔离中寻找突破点,否则强行将传统的RTOS适配到不能传递真实虚拟化集合的分割方案将会引发更大的复杂性或不稳定性。这样的专用方法违背了隔离以达到虚拟化的原则,而仅解决了本文所提及制约因素的小部分。相比之下,基于微核的虚拟化平台都很小,具有足够的灵活性来满足嵌入式设计的要求,以及满足可靠的和可验证的安全性的新兴需求。(end)
|
|
文章内容仅供参考
(投稿)
(11/6/2008) |
对 电子产品 有何见解?请到 电子产品论坛 畅所欲言吧!
|