rtems实时性的实现思想

总体设计思路:

rtems是一种基于扁平化内存管理的层次型单体内核,应用程序和rtems内核形成基于函数调用形式的整体功能单元,在一个地址空间下协同完成功能。而在通用的分时操作系统,应用程序和操作系统处于不同的地址空间,应用程序无直接访问系统硬件和操作系统中的系统数据。

系统调用是应用程序访问系统的接口,在系统调用接口上,通用操作系统和应用程序处于两个不同的cpu特权态,操作系统处于和心态,应用程序处于用户态,用户态无法执行特权指令,只能通过特定的指令或中断来访问操作系统提供的功能,这在一定程度上保证了系统整体的安全,避免应用程序对操作系统的破坏。rtems没有用户态和系统态之分,rtems内核和应用程序是简单的函数调用关系,好处是执行速度更快,但在安全性上相对削弱。


内存管理:

通用操作系统采用了虚拟内存管理方式,这样可以让内存需求超过实际物理内存的进程能够执行,主要思想就是将常用的数据和执行代码放在物理内存中,把不常用的数据放在二级储存(指的是硬盘等可在掉电后保存的存储介质),随时根据系统情况替换放在内存的数据和代码,而且通过虚存管理可以实现对不同内存区域的保护,这样一般情况下不同进程的地址空间不能直接访问,且应用程序不能直接访问内核地址空间,这样一个错误的应用程序不会导致系统的崩溃,增加系统的可靠性,但由于访问二级存储,导致内核访问的时间无法满足实时性的要求。

rtems没有采用虚拟内存管理,也就没有内存映射一说,而是采用了简单的单一地址空间管理方式,这样应用程序和rtems内核在一个地址空间,相互之间可以之间访问,好处是能够确保实时性和确定性,而且避免内存管理的开销和地址切换的开销,但安全性不够,一但应用程序错误,很容易造成系统崩溃。而且没有使用虚拟内存技术,只能使用有限的地址空间。


线程/进程管理:

通用操作系统采用进程和线程结合的管理方式,rtems没有进程的概念,只有线程,rtems称为task。因为rtems应用程序和内核在一个统一的地址空间,所以rtems的线程共享应用程序和内核地址空间,好处是线程开销小,资源管理和线程调度简单,在设计调度算法、同步互斥算法和线程间通信方面回避通用系统简化,进一步确保整个系统的实时性。


文件系统管理:

当前通用操作系统结合虚存管理,实现了多种复杂、高效且可靠的文件系统,且建立了一个统一的虚拟文件系统层,屏蔽不同文件系统的差异,对上层提供统一的接口。且与用户管理和进程管理结合,可实现安全管理,保证对文件的安全访问。

rtems没有用户和进程的概念,在安全性上基本没有考虑,但也有相对简单的虚拟文件系统层,支持数量有限的嵌入式文件系统,如IMFS(基于内存的文件系统)和DOSFS(fat文件系统)。


基于优先级的调度:

rtems是一个完全基于优先级调度的实时操作系统,一共有255个优先级,每个优先级有可以运行多个任务,在同一优先级上的任务可以指定FIFO和时间片轮转的调度策略。


固定大小的堆栈:

在基于通用操作系统的应用开发中,一般不需要了解应用程序对堆栈的使用量。但在rtems中,直接对物理内存进行访问,应用程序无法由操作系统自动完成堆栈的扩展,只能由应用程序在编译前指定好堆栈的位置和大小,且由应用程序保证在运行过程中,不会溢出堆栈空间。这给rtems应用程序开发人员提出了比较高的要求。


posted on 2016-12-21 22:56  sichenzhao  阅读(416)  评论(0编辑  收藏  举报

导航