首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

虚拟化技术在嵌入式系统中的应用

作者:李芳社 来源:现代电子技术


  摘 要:基于嵌入式系统对虚拟化环境的特殊要求,探讨如何设计虚拟机(VM)。针对工业实时控制,介绍了与第三方产品结合,把Intel虚拟化技术的好处拓展到应用中去。用虚拟化整合系统可以保证一定的实时性能;无需硬件冗余;进行软件移植而不简化应用。通过软件环境并行,虚拟化也允许原有的应用与新应用并存。它为多线程的应用在多核处理器上运行提供了途径。
  关键词:虚拟化;虚拟机监控器;实时操作系统;嵌入式系统;工业控制
  中图分类号:TP3919 文献标识码:B 文章编号:1004373X(2008)1604303
  
  Virtual Technology Application for Embedded System
  LI Fangshe
  (Beijing University of Civil Engineering and Architecture,Beijing,100096,China)
  
  Abstract:How to design Virtual Machine(VM)is explored in this paper,based on the special requirement of virtual environment for embedded system.For industrial realtime control,combining with third party product and extending the profit of Intel virtual technology to application is introduced.Real time performance is ensured by virtual consolidation system,without hardware redundancy and simplification of application with software migration.Virtualization also allows legacy application to coexist with new application by software environment in parallel and it provides a way for multithread applications on multicore processors.
  Keywords:virtualization;virtual machine monitor;realtime operating system;embedded system;industrial control
  
  1 引 言
  
  虚拟化技术已经应用于桌面、移动和IT服务器领域,实际上,在嵌入式系统中,也可以实现由虚拟化硬件环境而带来的一些好处,例如,多个操作系统(OS)可共享硬件平台的公共资源。这样就可以降低成本(既可降低资金成本也可以降低运营成本),提高系统的性能,增加系统的功能,或改善系统可靠性和安全性。本文着重探讨虚拟化技术在嵌入式系统中的几个使用模型。
  不考虑虚拟化的工作机制,使用模型的共同特点是,总是需要添加一个软件层,调度共享硬件平台的操作系统,管理分配给每一个操作系统的资源,当操作系统之间上下文切换时,保存/恢复状态。在这种方法中,每个操作系统在一个“虚拟机”(VM)上而不是在一个物理机上运行。该添加的软件层,虚拟机监控器(VMM),以类似于操作系统管理应用运行的方法管理操作系统的运行。
  尽管所有使用模型都有VMM,但是针对不同的应用要求可以对VMM的架构进行裁剪,以便为特定的应用需求做出不同的设计。对于不同的应用不仅需要裁剪VMM,而且也必须裁剪在VM内运行的操作系统以满足这些应用的要求。因此,一个通用操作系统(GPOS)如Linux,微软的Windows或Windows Server通常运行在桌面或IT服务器环境中,而一个不同种类的操作系统实时操作系统(RTOS)用于嵌入式系统和通信系统中。要在一个虚拟化的环境中提供特定的实时性就成了嵌入式系统设计的关键因素。
  
  2 嵌入式虚拟机监控器(VMM)设计考虑
  
  嵌入式系统的软件设计要求不同于服务器或桌面环境的软件设计要求。这些要求来自很多因素,包括系统的封闭性以及在这些系统上运行的实时任务。它决定了嵌入式系统环境的VMM设计。尽管许多嵌入式系统的要求有些类似,但是在嵌入式系统领域内,不同的应用却有不同的要求。在Intel推出含Intel虚拟化技术(Intel VT)的处理器之前,为不同的嵌入式系统应用开发一个VMM是一件复杂的事情,而且成本极高。有了Intel VT,嵌入式系统的特殊要求可由本文讨论的目标产品低价满足。
  针对嵌入式系统, VMM的设计应该考虑到嵌入式系统独特的隔离要求、静态特性,以及实时任务的支持。
  2.1 特殊的隔离要求
  嵌入式VMM与一般VMM要求之间的差异决定了VM如何彼此隔离。大多数嵌入式系统是封闭系统,即所有的软件由一个厂家编写,最终用户不能运行自己的软件。在有些情况下,这样可以减少通用VMM中的隔离要求。在嵌入式系统中,减少隔离通常可提高性能或提高性能的预期。但在其他情况下比如有关安全应用中,而应增加隔离而不是减少隔离,甚至还要求认证。
  有2个嵌入式VMM,通过减少隔离要求来支持最优化。第一个,许多实时操作系统运行不要分页。因为跨页使实时系统预期的代码性能以及有效地满足实时性变得困难。也导致了整体性能降低。在Intel VT系统中,运行没有分页的客体(guest)减少客体(guest)之间的隔离客体(guest) 能读写所有物理内存,包括设备或其他客体(guest)内存。在通用环境中,这是不可接受的,但是在一些嵌入式环境中,可能是优先选择的。第二个,I/O性能对于一个嵌入式系统的成功与否可能是至关重要的。这导致一些嵌入式VMM厂家允许VM直接访问内存访问(DMA)设备。这提高了性能,但是也允许一个恶意应用或设备驱动读写系统上的其他客体(guest)内存。在软件环境固定的环境中,这样的折衷可以被接受。
  即使一些嵌入式环境允许减少客体(guest)之间的隔离,但其他嵌入式环境有例外。尤其是,像由LynuxWorks支持那些有关安全和有关安全装置的环境不允许这种折衷。此外,Intel VT降低了生成VMM的成本,这样,用不同的设计折衷开发目标VMM成为可能。
  2.2 静态虚拟机
  很多嵌入式系统设计总是准确地知道将有运行什么任务。也准确地知道系统将使用什么样硬件。这使得设计者在设计时对如何分配硬件运行任务做出选择。于是,当使用嵌入式OS时,典型地,设计者静态分配特定的核和特定的内存区域给处理任务。这样减少了在GPOS中通常很重要的动态调度和动态内存管理。
  在虚拟化环境中,VMM为客体操作系统(guest OS)负责处理器调度和内存管理,就如同操作系统(OS)为应用程序负责处理器调度和内存管理。在嵌入式环境中,对OS的很多要求也适用于嵌入式环境中的VMM。需要注意的是,设计的VMM,在有关如何给VM分配资源时,系统设计者可以静态配置选择。嵌入式环境在二个方面改变了VMM的设计。第一,调度设计简化了,设计者可能手工静态地把任务映射到处理器核。调度发生在同一个核上运行的VM之间,使用不同于桌面系统中使用的调度策略,核之间的调度被简化。第二,设计内存管理更多地针对可配置性而不是动态分配。VMM依赖设计者规划分配给每个VM的内存区域。这样简化了VMM内内存管理的设计,但是增加了配置VMM的复杂性。
  
  2.3 实时系统支持
  很多嵌入式系统要求支持实时任务。像微软Windows这样的通用操作系统(GPOS)不能提供实时控制,其原因之一就是由于调度算法的限制。在这种情况下,调度是实体,它决定一个特定的进程或线程在指定的处理器上允许花多少时间。微软Windows使用基于优先级抢先的调度算法。这基本上意味着相同优先级的线程轮巡调度,优先级高的线程先于优先级低的线程获得服务。Linux也是基于优先级的调度算法。但是,RTOS通常使用严格的优先级调度任务。优先级调度允许优先级高的任务运行,只要它们有工作要做。通用调度算法总是试图保证没有任务能阻止另一任务的进程。
  在虚拟化环境中支持实时任务是一个挑战。典型地,VMM不可见地在RTOS中运行单个任务,也不知道它们的优先级。目前,嵌入式VMM厂家用的解决方案就是在处理器核上隔离RTOS,或者只允许RTOS与GPOS共享一个核并且给RTOS严格的、高于GPOS的优先级。
  在中断处理方式上实时环境与通用环境之间也存在差异。在很多嵌入式应用中,由外部硬件产生的中断必须在特定的时间内响应。GPOS不必具有在这样的能力,因为如果不限制时间,它们常常就关掉中断处理。这种做法对于要求实时控制的应用是不可接受的。
  对于实时中断处理,Intel VT起着重要作用。有了Intel VT,系统可以配置成这样,当一个客体关闭中断,只有发送给它自己的中断被关闭。另一方面,如果当RTOS正在运行一个关键任务时GPOS的中断发生,VMM将推迟发送中断,直到RTOS完成了该关键任务。
  许多嵌入式系统要求以不同的优先级运行的代码之间严格区分I/O的优先次序。例如,如果多个VM访问同一个网络设备,应用可能要求客体之间增强某些服务质量(QoS)的保证。这些保证可能以带宽或延迟的保证形式出现。一般地,这样的要求不会出现在通用系统中。这使得用于VM间共享设备的设计变得复杂。
  嵌入式系统有独特的设计要求,大大影响了如何为这样的系统设计VMM。Intel VT降低了生成一个VMM的成本。它允许VMM厂家把重点放在如何满足他们的市场需求,而不是花大气力应对虚拟化系统硬件的复杂性。
  
  3 工业控制中的虚拟化
  
  许多工业控制系统以高度可视的人机界面显示控制过程为特色,该过程可以是一个医疗设备,一个工厂,一条装配线等。这些显示也可能涉及快速变化的数据,或者它们可能包括访问网络数据库接口,访问示意图或诊断和维护流程。这样的系统得益于GPOS如微软的Windows的普及与丰富,以及强大CPU的计算性能。但是它们也需要实时控制以确保机器人精确地装配零件,移动机架和X光机到准确位置,以精确的时间操纵开关和执行机构,或完成准确时段内的功能。多数要求是闭环反馈控制系统:例如,如果传感器检测到机器已到达指定位置,传感器就发出一个信号,软件必须在一定时间内响应,该时间为毫秒级,以便机器在准确的位置停下。
  如上看到的,像微软Windows这样的GPOS不适合执行实时控制,因为它们被设计成在运行的进程之间公平共享处理器资源,从而防止有些进程“饿死”。所以,一般传统工业控制系统把它们的处理和控制功能分成主站和远程终端单元(RTU),主站实现人机界面和其他非实时管理功能,远程终端单元是小型计算机,实现实时控制功能,传统上使用可编程控制器。这些RTU包含传感器和执行机构,检测和控制操作环境,同时具有足够的计算性能,对环境变化和控制命令做出快速反应,执行通信协议与主站交换数据。RTU常必须工作在极端温度、湿度、振动或其他环境条件下,这些对电子组件比对机械组件更有挑战性。这些环境条件限制了所用计算组件的选择,或者增加了这些组件的成本,特别是,期望较大的性能裕度以支持未来的功能。所以,针对降低成本原因和期望一个公共的、可伸缩的、功能能够分层的基础设施,工业控制中的趋势朝着一个整合的平台发展,能分别提供实时控制功能与非实时功能。这样能简化RTU,而主站提供绝对优先级给实时控制以便在严格定义的时间内处理信号,而且仍然提供丰富的图形环境、数据库和GPOS的设备支持。
  3.1 工业控制中对虚拟化解决方案的调度和中断反应时间 尽管GPOS,如微软的Windows或Linux的XWindows的图形用户界面对于医疗设备或工业设备的控制满足要求,但是应用的响应时间通常不可接受。GPOS提供的平均中断反应时间的确可能在可接受的极限内(在5~20 ms级),但是设计必须针对最差情况的反应,GPOS的量级可能太长了。
  GPOS不适合的主要原因是因为调度策略和内核设计。调度是个实体,决定一个特定任务/进程/线程在给定的处理器上花多少时间。现代的GPOS调度允许用户提供一个应用调度控制的元素。Windows和Linux OS都提供了这个特性。尽管具备了这些特性,但是GPOS使用的调度算法没有提供足够的实时控制。
  调度行为直接影响了中断处理。当控制一个关键过程时,控制设备产生的中断必须在特定的、有限的时间内响应。GPOS没有这个能力,因为高优先级的任务/进程或线程有优先权。这种行为对于要求实时控制的应用是不可接受的。OS的内核设计也可能包括必须原子执行的部分关键代码,所以,在执行这些关键代码期间必须禁止中断,因此OS中最长的关键部分长度导致最差反应时间的增加。
  当今有不同的解决方案用于提供实时控制。有些解决方案提供实时内核,在一个完整的线程内运行GPOS和图形用户界面。定义一个API,允许GPOS和实时内核交互。如果需要线程调度,GPOS内的应用就利用实时内核提供的线程机制。
  另一种方法就是一个小的实时内核与GPOS一同运行。2个OS共享CPU、内存和中断控制器。但是,内核的每个版本有自己的上下文(描述符表,内存管理等)。实时内核决定何时执行特定进程来维持其决策,也控制中断传递以致不影响系统行为。如果执行实时任务期间发生中断,则实时内核就不必执行中断服务例程,如果它与GPOS有关。反之将继续执行实时任务,一旦完成它就把控制移交给GPOS,然后处理中断。
  在GPOS中这种决策设计可能很复杂。这样的OS可能不可用。注意:为了预期通用内核的行为,必须做某些假设。
  3.2 针对工业控制应用的商用虚拟化解决方案
  商用解决方案满足实时控制的紧急响应时间约束,并仍然提供丰富的、普及的微软Windows开发框架。比如TenAsys公司的INtime产品利用带有Intel VT的Intel处理器硬件能力为微软Windows提供极短的反应时间(最坏情况低至3 ms)和实时能力,并允许Visual Studio用于Windows环境和INtime环境中的开发。这使开发者能创建和部署已有的实时应用,而不用使GPOS或设备驱动达到实时性能。
  
  4 结 语
  
  上面阐述了虚拟化在嵌入式系统如在工业实时控制方面的应用。这些领域的要求互不相同,不同于日常熟悉的桌面环境。这表明在VMM与在VM内执行的客体OS内,针对不同的要求做出了体系结构和设计方面不同的权衡。
  
  参 考 文 献
  [1]Dean Neumann,Dileep Kulkarni,Aaron Kunze,et al.Intel.RVirtualization Technology in Embedded and Communications Infrastructure Applications,Intel Technology Journal,2006,10(3).
  [2]江慧琴,徐敏.中断管理进程化改善Linux实时性能方法研究\.现代电子技术,2007,30(14):4647,54.
  [3]徐波,乔纯捷.μC/OSⅡ在ADSP-BF531上的移植\.国外电子元器件,2005(12):1721.
  [4]孙世昶.虚拟化技术研究及PCI设备直接访问的实现\.大连:大连理工大学, 2006.
  [5]杨楠,Lyn.新型轻量级虚拟化技术\.杭州:浙江大学,2007.