实时操作系统(RTOS)是专用于对时间精确度敏感的操作系统。典型的情况是,这种应用需要从传感器收集数据、做出分析并对关键性设备进行控制,例如飞机、列车、手术刀。这类控制必须精准,不容许出现丝毫差错。这与通用操作系统(General Purpose Operating Systems, GPOS形成对比。

典型的通用操作系统,例如Android、Linux或者Windows,其设计目标是以复杂的调度规则来管理多种多样的处理器、GUI和外设功能,最高原则就是让系统中的各个功能部件都保持均衡运转的状态,并且通过用户界面与使用人员保持互动。值得注意的是,使用人员的反应速度如果能够快于1秒,就已经是非常难得了,而RTOS通常是要对传感器和设备进行互动,其反应速度达到毫微秒是司空见惯的。

​ 由此可见,RTOS与GPOS的应用要求截然不同,所以设计准则也就不同,前者用于进行速度极快的实时数据处理,后者用于一般的计算系统管理,而且常常涉及与人的交互,反应速度不会有太严苛的要求。

RTOS的基本特征

由于实时数据处理与设备控制的特殊要求,RTOS通常应该具备以下几个特征:

高度确定性:在一个操作系统中,确定性意味着某个动作必须保证在确定的时间做出,既不能出错,也不能太早或者太晚,必须在一个非常窄的时间范围内完成。例如,必须在某个特定的时间从某个传感器取得数据,或者必须及时控制某个部件做出某个动作。例如,用来控制一台机器的操作系统,如果它的确定性不够好,即便是可以勉强运转起来,也会出现很大的噪音或者抖动,而且很容易崩溃。

低延迟性:在关键性和高安全性的应用中,低延迟性通常是一项必须的要求。例如,一部行进中的汽车,当其中安装的传感器探测到路上有一个障碍物,那么从获得这个探测结果的那一瞬间开始,到处理器向自动刹车控制器发出指令,两者之间的延迟是否够低,就决定着这部车能否被安全地停下来,否则就会发生一场车祸。

多任务的同步:在计算机系统中执行多任务,这是十分常见的。每一个任务何时执行、何时挂起暂停,都是由操作系统来控制的。在RTOS之中管理着很多个传感器和控制信号,为了确保系统正常运行,必须做到任务之间的同步。同时,还必须对所有的非正常情况做出适当的响应。例如,飞机两个机翼的动作必须保持同步,否则很可能会导致空难。而GPOS中通常是各个任务各自执行,对此要求就没有那么严苛。就好比两个人同时在电商网站购物,只要不是在双十一大抢购,谁先买到都可以。

RTOS的王者——VxWorks

​在工业控制系统、医疗、军工、汽车、通信、轨道交通等领域,高确定性、低延迟性、多任务同步等特性都是必备的。如同我们常见的电脑中普遍都使用微软公司的Windows,在常见的手机里都使用谷歌公司的Android,在上述这些关键性应用中都使用风河公司的VxWorks。

为了支持有效且高确定性的操作,VxWorks允许开发者对OS底层进行访问,这是一项非常关键的能力。这样,开发者就可以定义调度优先级、任务延迟时间、内存分配以及其他参数,以便满足应用对于特定场景的需求。而GPOS是不会允许开发者拥有这种权限的。

​一种工具,一项技术,能不能安心地使用?要解答这个疑惑,有两种好方法:

第一,看它经历了多少考验。VxWorks做为嵌入式设备与系统领先的RTOS已经超过30年了,目前全世界有超过20亿部的设备都以它为基础运行着。经过多年积累,VxWorks的功能已经十分丰富,支持着无数企业继续部署着创新产品,同时帮助他们降低成本,加快产品升级速度。

第二,看它是否容易获得认证。VxWorks 653和VxWorks Cert Platforms已经在应用中获得验证,不仅可以满足最具挑战性的安全性要求,而且可以帮助企业用户以最便捷、高效的方式获得最严苛的安全性认证要求,包括EN 50128、IEC 61508、RTCA DO-178C、EUROCAE ED-12C等行业标准,覆盖了航空、国防、工业自动化、交通等许多行业。

​为了适应迅速蔓延的物联网需求,风河公司不断创新,让VxWorks具备新的能力,例如优异的虚拟化、确有保证的安全性、高度的可扩展性、丰富的互联性以及图形支持能力。同时,业界领先的硬件厂商大多数都已加入风河公司的合作伙伴生态系统,支持各种处理器的VxWorks BSP(板级支持包)在市场上已经十分普及。

​回顾历史,以VxWorks 653为例,它已经被用于80多个型号的民用和军用航空器之中,涉及到200多家企业的400多个工程项目,其中就包括我们都熟悉的波音787梦幻客机,空客A400M以及Northrop Grumman的UH-60V 黑鹰直升机。展望未来,VxWorks旨在成为物联网时代的操作系统。

为什么有些应用非VxWorks不可的更多相关文章

  1. Linux - 非阻塞socket编程处理EAGAIN错误

            在linux进行非阻塞的socket接收数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),这表明你在非阻塞模式下调用 ...

  2. 阻塞与非阻塞的IO网络读写

    看我之前的文章就知道,一般对于网络读的socket,都会加上O_NONBLOCK,非阻塞的选项. int setnonblocking(int fd) { int old_option = fcntl ...

  3. vxworks 实时操作系统

    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统.Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Mi ...

  4. VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer

    中断服务程序 ISR 硬件中断处理是实时系统的关键,因为它是外部时间通知系统的方式. ISR亦称为中断处理函数,是对中断的正确响应.可以使用任何ISR连接到任何没有被VxWorks使用的中断上.当关联 ...

  5. VxWorks 6.9 内核编程指导之读书笔记 -- Singnals

    Signals 信号是操作系统用于异常处理和异步控制流的关键.在很多方面,信号相当于软件方面的硬件中的中断.操作系统产生的信号包括总线错误和浮点处理异常.信号也提供了API来管理和产生信号.在应用程序 ...

  6. VxWorks 6.9 内核编程指导之读书笔记 -- 多任务

    概述 VxWork系统任务 任务调度 任务创建和管理 任务的错误状态 任务异常处理 共享代码和重入 概述 现代实时操作系统是基于多任务和任务间通信的概念的.多任务环境运行一个实时进程RTP可以被作为一 ...

  7. linux非阻塞的socket EAGAIN的错误处理

    http://blog.csdn.net/tianmohust/article/details/8691644 在Linux中使用非阻塞的socket的情形下. (一)发送时 当客户通过Socket提 ...

  8. linux select 与 阻塞( blocking ) 及非阻塞 (non blocking)实现io多路复用的示例

    除了自己实现之外,还有个c语言写的基于事件的开源网络库:libevent http://www.cnblogs.com/Anker/p/3265058.html 最简单的select示例: #incl ...

  9. vxworks

    VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统.Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Mi ...

随机推荐

  1. Mongoose 使用Node操作MongoDB

    Mongoose好处 可以为文档创建一个模式结构(Schema) 可以对模型中的对象/文档进行验证 数据可以通过类型转换转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比Node原生的MongoDB ...

  2. svn经典总结

    大佬的svn:http://www.cnblogs.com/armyfai/p/3985660.html#!comments https://www.cnblogs.com/0zcl/p/730976 ...

  3. PostgreSQL 初学常用实用命令

    常用命令 psql -h ip -p port -U user -d dbName 数据库 \dt(当前数据库所有表) \l(所有数据库) \c(切换数据库) \d 表名(查看表结构) table \ ...

  4. Netty练手项目-简单Http服务器

    简单的设计思路就是,启动一个可以截断并处理Http请求的服务器代码.使用netty提供的boss线程与worker线程的模型,并使用netty的http解码器.自行编写了http url处理的部分.在 ...

  5. Delphi 画笔

    樊伟胜

  6. 《python解释器源码剖析》第8章--python的字节码与pyc文件

    8.0 序 我们日常会写各种各样的python脚本,在运行的时候只需要输入python xxx.py程序就执行了.那么问题就来了,一个py文件是如何被python变成一系列的机器指令并执行的呢? 8. ...

  7. task_struct原码解读

    该结构体在linux中的路径为如下,如果是本地也可以根据以下子目录找到task_struct结构体,该结构体源码中在600多行 https://github.com/torvalds/linux/bl ...

  8. js常用阻止冒泡事件

    原文链接:http://caibaojian.com/javascript-stoppropagation-preventdefault.html 防止冒泡 w3c的方法是e.stopPropagat ...

  9. Python3.8新特性-- 海象操作符

    “理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机. 不记得没关系,只需要知道:有这么一位老司机, 穿上西装带大家打拼职场! 操起键盘带大家打磨技术! ...

  10. Sereja and Brackets CodeForces - 380C (线段树+分治思路)

    Sereja and Brackets 题目链接: CodeForces - 380C Sereja has a bracket sequence s1, s2, ..., *s**n, or, in ...