博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RTEMS与通用操作系统的不同点总结
阅读量:6567 次
发布时间:2019-06-24

本文共 1098 字,大约阅读时间需要 3 分钟。

RTEMS基于典型的实时操作系统涉及思路,与典型的通用操作系统(UNIX,windows)等差别很大。

一、系统调用方面

系统调用是应用程序访问操作系统的接口,通用操作系统中,操作系统与应用程序处于两个不同的CPU特权态,操作系统处于核心态,应用程序处于用户态,核心态可执行CPU特权指令,用户态不行。这保证了系统整体的安全。而RTEMS没有用户态和核心态,其内核与应用程序是简单的调用关系,且应用关系和RTEMS内核都处于核心态,这样的好处是执行速度快,但安全性削弱。

二、内存管理方面

通用系统采用虚拟内存管理方式,这样可以让内存需求超过实际物理内存的进程/线程能够执行,而且可以实现对不同内存区域的保护,不同进程的地址空间不能互相访问,且应用程序不能直接访问内核地址空间,所以一个错误的应用程序不会导致系统崩溃,增加了可靠性,但由于访问耳机存储,导致内存访问的时间无法满足实时性要求。而RTEMS没有采用虚拟内存管理,而是简单的单一地址空间管理方式,这样应用程序与操作系统在同一地址空间,好处是确保了内存访问的确定性和实时性,而且避免内存管理和地址切换的开销。但安全性削弱,一旦应用程序发生错误,系统容易崩溃,在内存的分配和释放的管理上,RTEMS实现相对简单,主要有固定分区分配和可变分区分配等,在可变分区分配上主要采用首次适配算法,容易产生内存碎片,但实时性高。

三、进程/线程管理方面

当前通用操作系统采用进程和线程相结合的管理方式,进程代表一个应用程序执行的过程,进程的执行流用线程来表示,一个进程包含多个线程。而RTEMS没有进程的概念,只有线程,称之为task,RTEMS的线程共享程序和内核所拥有的整个地址空间,可以把应用程序和RTEMS内核理解为一个特殊的进程,这个进程中,所有线程共享资源。在设计调度算法,同步互斥算法和线程间通信方面会更为简单。

四、在I/O管理方面

RTEMS与类UNIX操作系统差别不是很大,都是把设备看做一种特殊的设备文件。在灵活性方面,RTEMS驱动程序不能像通用操作系统那也动态加载,而是在编译时就静态确定的,这是RTOS普遍存在的问题。

总结:

简单来说,RTEMS是一个基于扁平内存管理的层次型单体内核,应用程序与RTEMS内核形成一个基于函数调用形式的整体功能单元,在一个地址空间下协同完成功能。对于通用操作系统,应用程序和操作系统是处于不同的特权状态和地址空间,前者运行在CPU的用户态,无直接访问系统硬件和操作系统的系统数据。

转载于:https://www.cnblogs.com/sichenzhao/p/9320166.html

你可能感兴趣的文章
现代软件工程 第十章 【典型用户和场景】 练习与讨论
查看>>
Linux如何编译安装源码包软件
查看>>
MySQL备份类型
查看>>
仿腾讯网的JS图片切换代码
查看>>
升级centos6.6至centos7.2.1511
查看>>
postgresql创建表
查看>>
springMVC参数传递(三)
查看>>
说说Keepalived的脑裂
查看>>
linux 学习总结
查看>>
CentOS6.4下安装xampp
查看>>
shell语法
查看>>
从某次测试过程中,得到的MySQL性能优化的建议,和定位问题的方法
查看>>
JS三大对象中常用方法集锦
查看>>
词汇与分词技术
查看>>
SVN安装部署方案(一)
查看>>
我的友情链接
查看>>
CentOS7.4下建立DNS主从服务器(二)
查看>>
浅析 Linux 初始化 init 系统
查看>>
RMAN的"rman: can't open target"错误
查看>>
我的友情链接
查看>>