RTEMS系统从零开始

总体设计思路

RTEMS 是一种基于扁平内存管理的层次型单体内核,应用程序与 RTEMS 内核形成一个基于函数调用形式的整体功能单元,在一个地址空间下协同完成特定的功能。

系统调用是应用程序访问操作系统的接口。RTEMS 没有区分用户态和操作系统核心态,RTEMS 内核和基于 RTEMS 的应用程序之间是简单的函数调用关系,且应用程序和RTEMS 内核都处于核心态,这样的好处是执行速度更快了,但在安全性上则相对削弱。

在内存管理方面,通用操作系统采用了虚拟内存管理方式,这样可以让内存需求超过实际物理内存的进程/线程能够执行。RTEMS 操作系统没有采用虚拟内存管理,而是采用了简单的单一地址空间管理方式。这样应用程序和 RTEMS 内核在一个地址空间,相互之间可以直接访问,这样的好处是可以使得需要访问的数据和代码都在内存中,从而确保内存访问的确定性和实时性,而且还避免了内存管理的开销和地址切换的开销。但在安全性和可靠性方向则削弱了不少,需要靠应用程序开发人员保证应用程序的正确性和可靠性。一旦基于 RTEMS 的应用程序产生错误,很可能造成整个系统的崩溃。在内存分配和释放的管理上,RTEMS 相对实现得比较简单,主要有固定分区分配和可变分区分配等,在可变分区分配上面主要采用首次适配算法,容易产生内存碎片,但实时性可以得到较好的保证。

在进程/线程管理方面,当前通用操作系统结合虚存管理,采用进程和线程结合的管理方式。进程代表了一个应用执行的过程以及其所占用的计算机资源(包括 CPU、内存、文件等),进程的执行流用线程来表示。操作系统的调度单位是线程。一个进程可以包含多个线程,属于同一进程的多个线程共享进程管理的资源,比如属于同一进程的多个线程共享进程所管理的内存,这样这些线程可以直接访问属于进程的全局地址空间。RTEMS 操作系统没有进程的概念,只有线程的概念,在 RTEMS 中把线程称为 task。由于 RTEMS 的应用程序和内核在一个统一的地址空间,且处于一个特权态,所以 RTEMS 的线程共享应用程序和 RTEMS 内核所拥有的整个地址空间。我们可以把应用程序和 RTEMS 内核理解为一个特殊的“进程”,在这个“进程”中,所有的线程共享其资源。这样的好处是线程开销小,资源管理和线程调度相对简单。在设计调度算法、同步互斥算法和线程间通信方面会比通用操作系统简化,这会进一步确保整个系统的实时性。

在文件系统管理方面,RTEMS 操作系统没有用户和进程的概念,在安全性上的基本没有考虑。但 RTEMS 也与一个相对简单的虚拟文件系统层,支持数量有限的嵌入式文件系统,如 IMFS(基于内存的文件系统)和 DOSFS(即 FAT 文件系统)。

I/O 管理方面,RTEMS 操作系统与通用操作系统(特别是类 UNIX 操作系统)差别不是特别大,都把设备“看成”是一种特殊的设备文件,有设备号,用文件的访问接口来进行打开、关闭、读、写和控制等操作。在灵活性方面,RTEMS 驱动程序不能象通用操作系统那样根据硬件情况动态加载,而是在编译时候就静态确定的,这是当前实时操作系统在灵活性方面普遍缺少的功能。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值