小论遗留操作系统向Linux系统迁移方法

发表于:2012-8-09 10:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:康华    来源:51Testing软件测试网采编

#
Linux
分享:

  遗留操作系统介绍

  首相要明确,这里我们需要迁移的系统并非一个应用系统(如通讯网关),而是一个真实的实时操作系统(名称暂时称为 OLDOS)。它有自己的完整的系统构架——内存管理、进程管理、异常处理、系统调用、设备驱动、甚至还有共享库、shell等。总的来说,它麻雀虽小,但五藏据全。作为承载平台,在其上运行着诸多服务和应用程序。

  我们的老系统开发于20年前,在那个时代它无疑非常出色,但随着底层硬件越来越丰富和上层应用程序要求也越来越高。老系统对硬件的管理和对进程的管理都逐渐显的捉襟见肘了——因为原先的设计对硬件支持编码缺乏分层结构,体系结构有关和无关代码未能清晰划分,这使得后期换板卡所带来的移植工作量很大;另外系统的进程管理功能和调试功能现在看来比较弱,不能有效管理进程,以及调试进程。

  除了技术原因一外,对于维护OLDOS的费用相比维护Linux系统要高许多,原因很简单――Linux已经很普及,因此培养或寻找Linux开发人员要比培养OLDOS人员容易,费用低。纵上所述,选择Linux平台作为操作系统是大势所趋。

  注释:曾经也选择过vxworks做操作系统,vxworks在实时控制领域有着良好口碑,但是由于其是商业产品,因此每销售一个我们装有vxworks的板卡,都需要给风河(vxworks的厂商)付费。这点和使用开源操作系统Linux相比很不划算。

  本文将下来主要就移植要求和移植基本策略进行分析,希望读者能从中体会系统架构的变换,进而增进对Linux系统的认识。

  移植要求和移植策略

  我们的移植要求总的来说需要满足:1、上层的应用程序和服务程序功能和接口保持不变;2、上层应用程序和服务程序系统实时性保持不变。也就是说以前的应用程序和服务程序可以不加修改的在新的Linux操作系统上运行。

  从上述要求可以得出,我们系统必须有和原先一样的API供上层应用使用。所以我们需要在Linux操作系统和上层应用和服务程序之间做一个适配层(很有点设计模式里的适配器的意思),而我们老的操作系统OLDOS便最终演化为这个适配层。请看下图。

  由图中前后两种架构我们可以看到,原先OLDOS操作系统是直接操作硬件,而移植后的系统架构则是Linux操作系统直接操作硬件,而OLDOS操作系统退化成一个适配层(OLDOS API)和一组OLDOS系统服务进程——原先体系结构相关的硬件操作代码完全交给Linux去处理了。另外还要看到应用程序和服务程序仍然调用OLDOS的 API函数,因为这样原先那些应用程序都可不经修改就可直接运行在新架构上。

  不过你定也猜到,它们当然也可直接调用Linux所提供的API,但这种调用要尽量避免,所以我们说受限使用。

  移植经过

  我们依系统架构层次自下向上开始介绍移植过程吧。

  驱动程序

  首先是驱动程序部分。OLDOS操作系统原来的架构与Linux相似,也是分为用户空间和内核空间,驱动程序处于内核空间中,控制硬件。还好我们是专用通用系统,没有丰富多彩的外设,因此驱动紧紧限于串口,Flash,以及几种专用的PCI外设。架构迁移到Linux操作系统上后,所有驱动必须进行移植,不过任务量不大,因为串口、Flash等驱动Linux都已经支持得很好,至于几种专有设备必须自己动手移植到Linux下了。并且以后需作为特殊设备文件被应用访问。这里没什么值得多说了。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号