RTEMS设计思想

来源:互联网 发布:琴岛 海尔 动画 知乎 编辑:程序博客网 时间:2024/06/16 02:41

  RTEMS 实时操作系统按照功能组件来组织整个内核, 采用了面向构件和面向对象的设计思想。所谓面向对象,就是任务、消息队列、互斥量等都是以对象形式存在,提供统一接口函数表来动态的创建、删除、操作预定义的对象类型,屏蔽不同对象底层的细节差异。所谓面向构件,就是操作系统通常不直接访问组件的数据结构,而是利用一系列的接口来访问和修改相应组件的数据结构。

  虽然RTEMS 采用面向对象和构件的设计思路,但是不是严格用面向对象的语言实现的,考虑到 RTEMS 出现在二十世纪八十年代,设计思想还是很具有前瞻性。RTEMS 的思想是用非面向对象的编程语言实现面向对象的目标,在实时系统的应用层和目标硬件之间提供一层关键的纽带,体系结构如下图所示 :


RTEMS 分为四层,最底层是与硬件直接相关的硬件抽象层,包括 supercore(上层核心组件与 CPU 相关的定义和功能)、libcpu (包括 CPU 各种初始化功能)、libbsp(包含各种外设驱动程序), bsp。 

第二层是核心层,由一系列核心组件( Handle) 构成,不同组件的相互协作为更高层的系统服务层提供服务。包括与线程管理和调度相关的组件( thread, thread queue,priority,watchdog) ,与同步互斥相关的组件( mutex,semaphore,message,rwlock,spinlock,barrier),与内存管理相关的组件( heap),其他组件( object,Time of Day,ISR,workspace,user extensions, API extensions, MPCI, Inter error)。

第三层是系统服务层,借助核心层不同 handle 的协作,提供三种 API 接口。其中 Classic API 提供的资源管理器( manager), 包括与任务调度相关管理器( task, RMS),与同步互斥与通信相关管理器( barrier,event,message queue,signal,semaphore) ,与内存管理相关管理器( partition,region,dual ported memory) ,与外设处理相关管理器( Interrupt, Clock,Timer,I/O) ,其他管理器( initialization,fatal error, User Extensions, Multiprocessing)。

第四层是应用服务层,主要提供网络协议栈, GUI 套件,文件系统服务等 


RTEMS与通用操作系统的差异:

( 1)应用程序与内核关系: RTEMS 是一种基于扁平内存管理的层次型单体内核,应用程序与内核平行,形成一个基于函数调用形式的整体功能单元,在一个地址空间下协同完成特定功能。 而对于通用操作系统来说, 应用程序与操作系统内核地位垂直,操作系统特权高于应用程序,而且地址空间也不是统一编码。 

( 2)系统调用: RTEMS 不区分用户态和核心态,内核与应用程序可以相互调用,通用操作系统应用程序要切换到核心态才能调用内核。
( 3)内存管理: RTEMS 不采用虚拟内存管理,采用单一地址空间管理,通用操作系统采用虚拟内存管理,有二级存储。 

( 4)进程/线程管理: RTEMS 没有进程,只有线程,所有线程共享资源;通 用操作系统采用进程和线程管理相结合方式。 

( 5)文件系统管理:RTEMS 只支持简单的嵌入式文件系统。如 IMFS 和 DOSFS;通用操作系统实现多种复杂高效可靠的文件系统

( 6) I/O 管理: RTEMS 不能像通用操作系统那样根据硬件情况动态加载, 值得注意的是, RTEMS 内核在编程时就已经静态确定。




0 0