科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>服务器频道>ZD评测>虚拟化:创建新软件开发模式

虚拟化:创建新软件开发模式

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

虚拟化的软件开发让开发人员创建高性能的、功能准确的硬件模型,让开发人员在开发流程较早的阶段开始调试、测试和优化系统。虚拟化的软件开发还能够避免代码本身的局限性,通过在需要时逆向执行代码提一种TiVo式的功能,不需要任何代码设备或者额外的硬件。

来源:IT专家网 2008年05月19日

关键字:IBM 虚拟化技术 MIPS 微处理器 开发模式 服务器 软件 虚拟化

  软件开发是一个迷人的行业。随着开发人员继续采用比较新的编程语言,如从Fortran到Pascal再到C++以及以后的语言,软件开发行业在过去的几年里已经发生了变化。但是,虽然开发人员愿意指望软件本身推动技术创新,可是几乎没有人考虑到他们的开发基础设施可能是变化的载体。随着开发流程中的虚拟化的出现,这就是要发生变化。

  简要历史

  当第一个嵌入式设备出现的时候,我们目前所知道的那种软件还不存在。所有的功能都是建在硬件内部的。随着微处理器的出现,软件内容出现了,但是,仍然只包括整个系统的一小部分。在过去的20年里,嵌入式行业见证了软件在规模和复杂性等方面爆炸式增长的全面转变。目前,软件是推动嵌入式系统增加功能和技术创新的主要推动因素。

  虽然硬件设计享受到了在工具和加工开发方面的大量投资,但是,软件开发流程自从80年代以来一直保持实际上的静止状态。硬件行业得到了定义良好的标准和流程的支持。但是,软件开发方式没有跟上发展的步伐,从而使编程人员完全以特别的方式接触软件开发。

  缺少软件开发基础设施的结果是非常相似的:成本超支、不能按计划进行和软件质量不佳。当前的软件开发有三分之二的项目推迟了上市时间,三分之一的项目超过了预算,几乎一半的嵌入式设计取消了。即使把额外的资源分配给一项工作或者重新确定一个产品的功能范围也不能让软件开发人员不会碰壁。

  差距

  为什么嵌入式计划领域存在这种脱节的问题?为什么在设计越来越复杂的情况下软件开发仍然停滞不前?这个问题既不是人的问题,也不是组件的问题。这问题是由缺少深思熟虑的旨在帮助软件开发的战略开发基础设施引起的。

  目前的嵌入式设备一般是从头开始制作的,以硬件开始和以软件结束的。这个过程是完全是按顺序进行的,首先是围绕预期的内存、MIPS、接口、连接等等进行硬件设计。多个组件合在一起组成一个硬件系统。软件是在这个硬件的基础之上进行开发的。这种以硬件为中心的、从基础开始开发的方法包括多个步骤并且产生多种依赖性。只有在经过系统集成阶段,当软件在这个平台上实际运行的时候,才能够从性能的观点理解这个系统。

  从基础开始开发的这种方法的主要弱点是它把软件当作设计流程中的一个后添加的东西,尽管系统功能数量的增加要依靠软件,而不是硬件。集成发生在这个过程非常晚的时候,因此很难发现硬件、设计和或者架构引起的问题。在许多情况下,开发人员要重新考虑他们的设计以防止不能按计划完成和预算超支的问题。

  随着软件的复杂性达到新的高度和严谨的计划是出货的最大障碍,以硬件为中心的方法低效率和不实际性正在越来越明显。开发人员如何战略性地重新考虑他们的开发方法以便不再成为硬件的牺牲品?系统级软件开发如何能够在设计流程的早期开始?虚拟化正是要解决这些问题。

  虚拟化的先驱

  虚拟化在嵌入式设备开发中的应用已经有许多年了,一方面是用于替换实际的硬件,另一方面是用于复杂系统的设计和调试平台。在硬件设计行业,模拟一直在插座和印刷电路板级别上应用。无论设计处理器、印刷电路板或者系统芯片,硬件开发人员都能够利用Mentor、Cadence和Synposys等公司的模拟工具建模或者预测他们的系统的行为,而不必等待实际物理系统的开发。

  在嵌入式设备领域之外,我们已经看到许多行业在使用其它传统的方法碰壁之后成功地使用了虚拟化技术。在过去的两年里,服务器虚拟化已经取得了巨大的进步,提高了数据中心的效率和降低了整个拥有成本。虚拟化已经解决了服务器增加、处理器利用不足和应用程序隔离等难题。

  在软件开发中使用虚拟化技术的还有许多行业,如航空空间和国防行业。这些行业需要非常复杂的设计,一般需要很多年才能有可行的硬件。模拟已经被用作内部关键的解决方案。设计的复杂性实际上要求这些公司投入一些资源在内部开发虚拟化的软件开发解决方案。

嵌入式软件开发行业目前正处在这种状况,传统的以硬件为中心的开发或者内部的一次性虚拟化软件开发解决方案都不能提供及时上市、节省成本和质量保证等好处。这些好处在竞争激烈的市场中是必须的。嵌入式设备中软件内容的任务还没有消失的迹象,多内核设备的普及为硬件和软件的组合提供了前所未有的复杂性。不可避免的向多内核设计的过渡强调了需要开发能够利用多核设备潜在性能的软件开发解决方案的需求。

  当前嵌入式软件开发的状况需要企业战略性地再次访问和重新思考他们的流程,不仅要在组件级重新考虑这些问题,而且要在流程设计级考虑这些问题。我们能够从硬件行业学习一些东西,包括虚拟化技术。但是,我们需要让虚拟化再前进一步,在我们自己的行业把虚拟化技术作为一种基础的、基本的基础设施。

  虚拟化的软件开发是一种让软件开发脱离应用程序将使用的物理硬件的一种产品开发战略。虚拟化的软件开发能够让开发人员直接在台式电脑上开发,产生一个真正联合开发的战略。在这个战略中,硬件和软件开发是同时开始的。软件/硬件集成变成了一种前台优先安排的事情,而不是后台的工作。

  虚拟化的软件开发让开发人员创建高性能的、功能准确的硬件模型,让开发人员在开发流程较早的阶段开始调试、测试和优化系统。虚拟化能够应用于各种详细的级别(如从处理器到电路板到设备),在一个准确的级别上,二进制代码能够不加改变地运行,行为不会发生任何异常。

  高性能虚拟平台提供了在物理平台上进行测试不可能达到的控制水平。软件本身的性质是在同样的条件下执行的方式都是一样的。这种决定论在虚拟的测试中变成了现实。随着处理器和硬件设计复杂性的提高,决定论意味着在操作中的一些变化。这些变化不仅是由于可以跟踪的软件瑕疵引起的,而且还是由不能跟踪的硬件中的变化的引起的。这将产生称作“海森堡虫子”(Heisenbug)的事件。这种状态取决于不能重复的敏感的时机互动,即使整个系统完全重新运行一次也不能重复这种状态。这个以虚拟化平台为基础的模拟基础设施允许开发人员采取一次性步骤或者停止检查其内部状态。开发人员能够反复地重新产生一个错误,甚至在模拟多处理器内核和每个内核的多个流程的时候也能够做到,从而使多内核处理器的调试与在单内核处理器上调试一个程序一样简单。

  虚拟化的软件开发还能够避免代码本身的局限性,通过在需要时逆向执行代码提一种TiVo式的功能,不需要任何代码设备或者额外的硬件。虚拟化让开发人员等待一个错误的出现,然后“倒卷磁带”重新执行一遍那个代码,查出引起问题的原因。“倒卷磁带”重新执行代码需要廉价地检查整个系统的容量以及以飞快的速度进行模拟的能力。退回一个指令的过程实际上就是倒回到一个检查点,然后前进到“倒卷磁带”点之前下达指令的那个点。如果模拟的速度足够快,这个过程对于用户来说就像是同时发生的。这种可逆向的调试环境与多处理器和多核处理器一起使用,让开发人员能够查出许多软件瑕疵,如竞态条件、被零除错误、锁冲突、僵局和优先权不足等等。所有这些问题在多核架构中是很容易出现的。

  创建虚拟化模型还需要广泛的标准,找出软件和硬件团队都能够使用、增强和共享的一个有意义的平台。虚拟化的软件开发能够访问无限数量的虚拟目标。这个虚拟的平台(作为硬件的一个软件代表)能够在几秒钟之内用电子邮件发送到全世界。因为虚拟模型制作的数据没有物理的限制,企业能够与合作伙伴和客户方便地和有效地共享自己的虚拟化的软件开发的知识产权。

  最近推出的一个类似的平台“谷歌Android”就说明了虚拟化的软件开发的情况,尽管这是在软件开发工具环境中说明的。然而,这个概念是相同的,并且包括一个模拟的虚拟平台。这个模拟平台能够实现严密的管理方法,不需要应用程序级上的硬件。这个虚拟平台能够提供设计所需要的全部服务,把硬件当作前台而不是后台的事情。一旦软件开发完成,硬件将为软件进行优化,而不是相反。

  实践中的虚拟化软件开发

  虚拟化的软件开发正在把自己的益处向主流的、商业性的领域扩展。许多公司已经在自己的设计流程中实施这种方法,创建基于虚拟化的软件开发的新的和创新的基础设施。

  

  图1

  IBM在开发和测试其强大的POWER6平台中的复杂的软件过程中使用了虚拟化的软件开发技术。通过使用这个技术,IBM的开发团队能够解决在开发复杂的固件和管理程序中遇到的难题,在虚拟的系统模型中启动和运行多个操作系统,不需要物理硬件。这种做法有助于减少整个硬件开支。IBM很快认识到它可以使用虚拟化的软件开发优化其整个产品开发生命周期以及最大限度地减小硬件和软件设计团队之间的障碍。

  通用电气航空系统公司使用虚拟化技术为其处理模块开发模拟的模型。通用电气公司建立最终系统的模型能够比传统的开发环境提供更大的好处。这些好处包括减少的开发与测试成本、获取和维护成本以及变化的成本。虚拟化的软件开发的确定性能力使通用电气公司的开发人员轻松地再现性能问题以便进行深入检查和诊断。

  设备软件优化(DSO)领域的龙头企业Wind River一段时间以来一直虚拟化的软件开发方法改善操作系统的开发流程(如在VxWorks SMP),一贯地和公开地把虚拟化的软件开发作为自己开发战略中的一个主要因素。

  最近,智能设备Linux操作系统提供商Monta Vista软件公司把虚拟化的软件开发又向前发展了一步,把虚拟化作为其软件销售和评估过程的一个关键部分。Monta Vista允许其潜在的用户在网络上评估其Linux产品,方法是通过一项名为“TestDrive”的服务把用户连接到一个虚拟的信息板并且在一个虚拟化的软件开发平台上运行评估。这是虚拟化的软件开发鼓励新的思考和做生意的方法的一个极好的例子。

综合评分:8.91 分
云能力:9 分
营业额:1045亿美元[2012]
云服务:IBM Systems Director VMControl

查看更多 >>

邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅ZDNet技术邮件将是您的最佳途径之一。