新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PMON的软件架构由Nucleus移植到Linux设计方案

PMON的软件架构由Nucleus移植到Linux设计方案

作者:时间:2011-12-08来源:网络收藏

引言

本文引用地址:http://www.eepw.com.cn/article/150000.htm

  是单一地址空间操作系统的一种,作为商业化的嵌入式操作系统产品,曾被广泛使用。在MIPS中,其操作系统和用户程序完全工作在内核模式,且只占用和访问0x80000000以上的线性地址空间。因此,在中,操作系统和用户程序工作在线性地址空间中,且用户程序与内核服务之间没有明显的区分,进入内核服务更像是调用API(Application Program InteRFace)而不需要上下文切换。其优点是限制少,编程方便,但系统健壮性差。

  操作系统因其开放性和稳定性等优点,近年来为越来越多的嵌入式所采用。它有着严格的内核模式和用户模式的区别,在MIPS中,用户模式只能访问0x80000000以下的空间,内核模式可以访问所有的空间,而在任何模式下访问0x80000000以下的空间时,都介由TLB(Translation Lookaside Buffer)进行虚拟专有地址到物理地址的映射。因此,各用户进程运行在各自虚拟地址空间内,而非线性地址空间,用户进程在进入内核服务时,将以软中断的方式进行并伴随着上下文切换。其优点是系统稳定健壮,但系统需要遵守特定的约束。

  光纤环行网监控记费系统(Packet Over SONET Monitor)是华中科技大学电信系与美国Combrio公司合作的项目。系统完成OC48光纤环形网上的数据抓取并转发至12个千兆快速以太网口,支持基于规则的流分类、负载均衡和NETFOLW计费。在MIPS下的操作系统中已成功实现,现将架构由Nucleus中,便要面临从单一模式(内核模式),单一地址空间到多模式(内核模式和用户模式),多地址空间的问题,本文就此提出了一种高效,廉价的

  PMON在Nucleus中的实现

  图1描述了PMON架构在Nucleus操作系统中的实现,其中主要包括各硬件驱动程序,硬件驱动层的一个统一接口,一个负责各驱动程序初始化、配置及一致性检查的模块,一个中断服务接口,各应用程序或进程及操作系统本身。各模块的划分只是程序在逻辑上的分割,它们都处于同一线性地址空间中,可以视作一个二进制程序块,将这个架构及程序到多地址空间的操作系统中时,便需要考虑各模块应工作在什么地址空间及什么工作模式下。

Nucleus中的程序架构

图1 Nucleus中的程序架构

  PMON在Linux中的传统解决

  Linux中的传统程序架构

  图2描述了在Linux操作系统中PMON软件的传统设计架构。由于接口已被Linux操作系统所规范,程序的设计工作集中在驱动模块,负责各驱动程序初始化、配置及一致性检查的模块,及各应用程序。

  各驱动程序处于Linux的内核层,各自对Linux的中断管理模块申请中断。各驱动程序直接挂载于Linux的设备管理模块,从而通过Linux的文件系统对用户层提供各自的驱动管理、应用接口,驱动的配置和一致性检查等模块将置于用户层中,同处于用户层的还有各用户进程。

Linux中的传统程序架构

图2 Linux中的传统程序架构

  性能分析

  以上描述的程序设计,符合Linux架构下设计的一般原则,结构清晰。驱动程序挂载在Linux的设备管理模块上,可以利用Linux的Module特性,动态加载和卸载驱动,这对于支持热插拔的系统非常有利。

  但在的角度看来,各驱动程序都需要为了适应Linux的接口而进行相当程度的改写,没有充分利用原来的代码而增加了工作量;各驱动程序都要直接向Linux的中断管理模块申请中断,在一个具有规模的系统中,将导致中断资源的短缺;由于各驱动都直接向Linux设备管理模块挂载,致使在文件系统中有各自的接口,迫使对于驱动程序配置和一致性检查管理的模块置于用户层,每一次对于设备及驱动的完整及一致性检查都要进行上下文切换,效率极低。在用户进程看来,它需要面对的由文件系统提供的设备接口也比较繁杂,没有一致性的接口,调用各设备接口时,也没有底层模块为其调用设备组合的合法性作出检查和保证。

  改进后的PMON在Linux中的解决方案

  从以上分析可见,如果遵循传统的Linux程序设计来将PMON软件架构由Nucleus移植到Linux中,效果不能令人满意。为此提出一个设备多个模块,架构“整体搬迁”的方案。

  改进后的PMON软件在Linux中的程序架构

  改进后的Linux中PMON程序架构如图3所示。各驱动程序、驱动管理模块(Driver Management)及中断管理模块在Linux内核中运行,而用户进程在用户空间中运行。各驱动程序编译为多个模块,而由驱动管理模块向Linux设备管理模块申请为一虚拟设备。就内核中的模块而言,实现了从单一地址空间到多地址空间的“整体搬迁”。

 改进后的程序架构


linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭