为什么有些应用非VxWorks不可
实时操作系统(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不可的更多相关文章
- Linux - 非阻塞socket编程处理EAGAIN错误
在linux进行非阻塞的socket接收数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),这表明你在非阻塞模式下调用 ...
- 阻塞与非阻塞的IO网络读写
看我之前的文章就知道,一般对于网络读的socket,都会加上O_NONBLOCK,非阻塞的选项. int setnonblocking(int fd) { int old_option = fcntl ...
- vxworks 实时操作系统
VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统.Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Mi ...
- VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer
中断服务程序 ISR 硬件中断处理是实时系统的关键,因为它是外部时间通知系统的方式. ISR亦称为中断处理函数,是对中断的正确响应.可以使用任何ISR连接到任何没有被VxWorks使用的中断上.当关联 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- Singnals
Signals 信号是操作系统用于异常处理和异步控制流的关键.在很多方面,信号相当于软件方面的硬件中的中断.操作系统产生的信号包括总线错误和浮点处理异常.信号也提供了API来管理和产生信号.在应用程序 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- 多任务
概述 VxWork系统任务 任务调度 任务创建和管理 任务的错误状态 任务异常处理 共享代码和重入 概述 现代实时操作系统是基于多任务和任务间通信的概念的.多任务环境运行一个实时进程RTP可以被作为一 ...
- linux非阻塞的socket EAGAIN的错误处理
http://blog.csdn.net/tianmohust/article/details/8691644 在Linux中使用非阻塞的socket的情形下. (一)发送时 当客户通过Socket提 ...
- linux select 与 阻塞( blocking ) 及非阻塞 (non blocking)实现io多路复用的示例
除了自己实现之外,还有个c语言写的基于事件的开源网络库:libevent http://www.cnblogs.com/Anker/p/3265058.html 最简单的select示例: #incl ...
- vxworks
VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统.Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Mi ...
随机推荐
- 微信小程序onLoad、onShow、onHide、onUnload区别
onLoad:页面第一次加载时触发,从跳转页面返回时不能触发,可以传递参数 onShow:页面显示或从后台跳回小程序时显示此页面时触发,从跳转页面返回时触发,不能传递参数 onHide:页面隐藏,例如 ...
- call,apply和bind的秒懂区别
对象.方法(); 谁调用该方法this就指向谁. call()语法: call()精华: 让一个函数成为指定对象的方法进行调用. Person.call(document); //等价于 docume ...
- flutter: Another exception was thrown: Navigator operation requested with a context that does not include a Navigator.
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends State ...
- python 小记
判断一个数是奇数还是偶数 #!/usr/bin/env python3 #_*_coding:UTF-8_*_ def pan(num): ==: print( str(num) + ' is: 偶数 ...
- 如何解决Win10电脑网速慢的问题?
很多Win10系统用户反映自己的电脑配置并不算低,却比有些旧电脑上网速度还要慢,不知道是什么原因. 其实,除了运营商网速的原因外,我们的电脑设置也会对网速有所影响.下面好系统U盘启动就来介绍一个Win ...
- win10编译maskrcnn benchmark
步骤 1. 按照官网的Option1安装步骤安装 https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL. ...
- Python 3 中字符串和 bytes 的区别
在Python中字符串和unicode真是傻傻分不清楚,在没搞懂两个区别时,你会发现程序报的错怎么改都是再报错,让你烦躁. 学习Python的时候,又重温了这部分内容,写了这个学习笔记. Python ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- 查看电脑物理地址(MAC)方法
首先打开电脑,按ctrl+R键,将会出现以下界面 然后直接点击确认即可,会出现管理员界面,如下 我们现在有两种查看MAC地址的方法: 方法一:.直接输入ipconfig/all(或者输入ipconfi ...
- C++虚函数作用原理(一)——虚函数如何在C++语言逻辑中存在
C++多态,接触其实也没太长的时间.上课的时候老师总是不停的讲,多态可以实现利用一个基类对象调用不同继承类的成员函数.我就会觉得很伤脑筋,这个的原理到底是什么?是什么呢? 开始的时候我觉得自己应该能够 ...