基于嵌入式环境中Nucleus到Linux的程序移植方案
由于在Linux操作系统看来,只存在一个虚拟设备,因此,在文件系统中,向用户空间提供的接口必然统一,用户进程不必考虑设备和驱动的完整一致性,使用户进程的设计简单干净。驱动管理模块作为一个虚拟设备,只向Linux的中断管理模块申请一个中断号,而由新架构中的中断服务模块,负责提供接口给各驱动程序用来注册中断处理函数,并负责将中断信号分发至各处理函数。这不仅满足了各驱动程序的中断要求,也解决了Linux系统中断资源有限的问题。
新的架构的设计,将工作量主要集中到了驱动管理模块的设计上,驱动管理模块其实就是独立于Linux设备管理模块的一个简易设备管理模块,要完成以下工作:实现驱动动态加载的功能,为各驱动程序提供注册的统一接口,实现各驱动程序的配置和初始化,负责检查各设备和驱动、各设备之间和各驱动之间的合法性和一致性,负责向Linux设备管理模块注册一个虚拟设备,负责将从用户层进入虚拟设备的命令解析并分发至各驱动程序。而以上列举的驱动管理模块应完成的功能,在Nucleus中,实现各驱动程序的配置和初始化,负责检查各设备和驱动、各设备之间和各驱动之间的合法性和一致性等功能是已经完成的。
性能分析及移植结果
改进后的PMON软件在Linux中的程序设计与传统的Linux程序设计相比:
1)由于最大限度避免了用户空间陷入内核空间及内核空间返回用户空间时的上下文切换,性能显著提高。
2)底层驱动为用户空间提供了统一的驱动接口,简化了用户进程的设计。各驱动程序的移植也由于避开了为Linux设备管理接口而进行的改写,从而显著提高了开发效率。
3)中断服务模块的设计,有效地扩展了中断资源。
4)对于Linux动态加载模块功能的有效利用,有效节约了嵌入式系统中有限的内存。
在PMON项目中,应用了改进后的程序设计,以6个人月的工作量便完成了原系统软件的移植工作,且系统性能完全满足设计要求。
结语
本文提出的将PMON软件架构由Nucleus移植到Linux中的方法,即单一设备、多个模块、架构整体搬迁,有效地提高了移植的效率和移植程序的性能。对于其他将单一地址空间程序移植到多地址空间操作系统的项目,也有一定的参考价值。由PMON软件架构在MIPS架构下,从Nucleus操作系统中,移植到Linux操作系统后的结果来看,方案可行、廉价、高效。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论