什么​是​实​时​操作​系统 (RTOS)?

概览

本文​档​解释​了​什么​是​实​时​操作​系统​(RTOS),​实​时​操作​系统​如何​用于​测量​和​控制​应用,​以及​实​时​操作​系统​与​Windows​等​通用​操作​系统​的​区别。

内容

实​时​操作​系统​简介

下面​将​列出​与​实​时​操作​系统​相关​的​基本​概念​和​术语。 阅读​完​本文​档​以后,​建议​继续​阅读使用​NI​硬件​和​软件​创建​实​时​系统,​了解​如何​用​最短​的​时间​搭建​高​质量​的​实​时​系统。

什么​是​实​时​操作​系统?

一般​而言,​操作​系统​的​任务​是​管理​计算​机​的​硬件​资源​和​应用​程序。 实​时​操作​系统​会​执行​这些​任务,​但是​运行​时间​精度​和​可靠​度​都​极​高。 在​实际​应用​中,​有​的​系统​失常​代价​高昂,​甚至​会​引起​安全​事故。​这时,​操作​系统​的​时间​精度​和​可靠​度​都​显得​格外​重要。

顾名思义,​实​时​操作​系统​必须​在​已知​的​关键​时间​内​完成​关键​操作,​至少​要​在​绝对​大​多数​情况​下​在​已知​时间​内​完成​关键​操作。 部分​这类​操作​包括​操作​系统​调​用​和​中断​处理。 完全​满足​在​指定​时间​内​完成​关键​性​操作​的​实​时​操作​系统,​被​称为“硬实​时”操作​系统。​大​多数​情况​下​能​满足​在​指定​时间​内​完成​关键​性​操作​的​实​时​操作​系统,​被​称为“软​实​时”操作​系统。 实际​情况​中,​上述​分类​的​指导​意义​有限。​每​个​实​时​操作​系统​都有​独特​的​性能​特征,​用户​在​决定​使用​某​个​实​时​操作​系统​之前​需要​仔细​研究​这些​特征。

下面​通过​列​子​来​帮助​理解​实​时​操作​系统​的​概念。 假设​您​在​为​一​款​新​车​设计​安全​气囊​系统。 在​该​情况​下,​极​小​的​时间​误差​(太早​或​太迟)​都会​产生​灾难​性​后果,​甚至​导致​人员​伤亡。 因此,​需要​一个​硬实​时​系统;​在​系统​设计​上​要​确保​没有​任何​操作​的​优先​级​可以​凌​驾​于​时间​限制​之上。 另一方面,​如​要​设计​一个​接收​流​媒体​手机,​在​保持​大致​不​丢失​流​媒体​数据​的​前提​下​可以​偶尔​遗失​少量​数据。 在​这种​应用​中,​一个​软​实​时​操作​系统​就​可​满足​要求。

如果​编​程​合理,​实​时​操作​系统​可​保证​程序​运行​在​时间​上​的​稳定​可靠性。 实​时​操作​系统​向​用户​提供​任务​优先​级​排序​的​高度​控制​权,​也​通常​会​允许​用户​检查​任务​执行​是否​符合​时间​上​设定​的​要求。

与​实​时​操作​系统​相比,​个人​电脑​上​最​常见​的​操作​系统​称为​通用​操作​系统,​例如,​Windows。 下面​将​详尽​阐述​实​时​操作​系统​和​通用​操作​系统​的​区别。​在此​之前,​要​先​了解​两​种​操作​系统​的​优​劣。 Windows​等​操作​系统​通过​运行​多个​程序​和​服务​来​维持​对​用户​操作​的​响应,​实​时​操作​系统​通过​精确​和​可靠​度​定​时​机制​(关注​编​程​人员​设定​的​优先​级)​来​运行​关键​性​应用​程序。

重要​的​术语​和​概念

确定​性:运行​在​实​时​操作​系统​上​的​应用​程序​(或​应用​程序​的​关键​性​片段),​如​能​保证​时间​精度,​就​认为​是​确定​性的​程序。

软​实​时​和​硬实​时:完全​能​保证​时间​精度​的​操作​系统,​称为​硬实​时​操作​系统。 多数​情况​下​能​保证​时间​精度​的​操作​系统,​称为​软​实​时​操作​系统。

抖动:程序​开始​时,​首次​循环​相​对于​后​续​循环​在​时间​上​的​差异,​称为​抖动。 实​时​操作​系统​可​确保​在​编​程​合理​的​情况​下,​抖动​为​最小​水平;​任务​首次​执行​与​后​续​循环​执行​所用​的​时间​非常​接近。

图​1:抖动​指​一次​任务​执行​和​后​续​任务​执行​之间​在​时间​上​的​差异。 实​时​操作​系统​通过​各种​优​化​方式​使​抖动​最小​化。

 

实​时​应用​程序​范例

实​时​操作​系统​用于​两​类​应用:​事件​响应​和​闭​环​控制。 事件​响应​类​应用​需要​在​指定​的​时间​内​对​外界​触发​条件​作出​响应。​例如,​生产​线上​自动​视觉​模式​识别。 在​视觉​识别​系统​中,​必须​在​生产​线​移动​之前​对待​测​部分​进行​拍照​和​分析。

对​运行​在​硬实​时​操作​系统​上​的​程序​进行​严格​的​设计​和​调​试​之后,​在​事件​响应​上​工作​的​设计​人员​可​保证​响应​的​确定​性​(在​指定​时间​内​发生)。 在​视觉​识别​案例​中,​使用​通用​操作​系统​可能​会​导致​无法​及时​检测​待​测​部分,​从而​降低​生产​线​速度、​强制​报废​待​测​品,​甚至​交付​潜在​的​次​品。

在​闭​环​控制​系统​中,​例如,​汽车​巡航​控制​系统​会​连续​处理​反馈​数据,​调整​输出。 因为​输出​数据​取决​于​是否​能​在​指定​时间​内​处理​完​输入​数据。​在​指定​时间​内​完成​任务​至​为​重要,​只有​这样​才能​有​正确​的​输出。 如果​巡航​系统​无法​在​给​定​时间​点​上​判断​合适​的​油​门​设置,​会​发生​什么​情况? 硬实​时​系统​可​保证​在​指定​时间​内​及时​处理​控制​系统​的​输入​数据。

还​必须​指出,​很多​程序​必须​运行​多个​周期​后​才能​充分​体​现实​时​操作​系统​的​可靠性。 与​通用​操作​系统​同时​处理​多个​程序​和​进程​不同,​实​时​操作​系统​上​只有​少量​程序​运行。​实​时​操作​系统​适用​于​宕​机​代价​高昂​的​全天候​系统。

如​要​在​项目​中​使用​实​时​操作​系统,​请​查看我​是否​需要​实​时​系统?

探究​事实:​实​时​操作​系统​与​通用​操作​系统​有​哪些​不同​之处

Windows、​Mac OS​等​操作​系统​是​开发​和​运行​非​实​时​测量​和​控制​应用​程序​的​优秀​平台。 这些​操作​系统​使用​于​实​时​操作​系统​之外​的​使用​场合。​对于​要求​精​确定​时​和​长​时间​稳定​运行​的​系统​而言,​通用​操作​系统​不是​理想​的​平台。 下面​将​阐述​两​种​操作​系统​之间​的​区别,​以及​编写​实​时​应用​程序​时​的​注意​事项。

设置​优先级

编写​应用​程序​时,​大​多数​操作​系统​都​允许​程序​员​指定​应用​程序​的​总体​优先​级,​以及​应用​程序​中​不同​任务​(线​程)​的​优先​级。 这些​优先​级​设置​将​程序​和​任务​的​重要性​告知​操作​系统。 如​两​个​任务​同时​运行,​操作​系统​将​优先​运行​优先​级​设置​较​高​的​任务。

在​实际​应用​中,​通用​操作​系统​不会​始终​严格​按照​程序​设置​的​优先​级​执行。 因为​通用​操作​系统​可​同时​运行​多个​应用​程序​和​进程,​所有​任务​都会​被​分配​到​一些​处理​时间。 在​某些​情况​下,​低​优先​级​任务​的​临时​优先​级​可能​会​比高​优先​级​任务​更高。 这样,​每​个​任务​都会​分配​到​一定​的​运行​时间。​这​会​违背​程序​设计​人员​的​设计​初衷。

实​时​操作​系统​可​严格​按照​程序​员​设置​的​优先​级​执行​程序。 在​多数​实​时​操作​系统​上,​如果​一个​高​优先​级​任务​占用​率​100%​的​处理​器​资源,​低​优先​级​任务​将​一直​等待​直到​高​优先​级​任务​完成。 因此,​设计​实​时​应用​程序​时,​必须​谨慎、​合理​设置​优先​级。 在​一个​典型​的​实​时​应用​程序​中,​设计​者​应该​将​实​时​代码​放置​在​高​优先​级​的​部分。 写​入​磁盘、​网络​通信​等​较​低​优先​级​的​代码​应该​放在​较​低​优先​级​的​部分。

中断​延迟

设备​生成​一个​中断​和​设备​中断​发生​之间​的​时间,​称为​中断​延迟。 通用​操作​系统​响应​中断​需要​的​时间​不​固定,​实​时​操作​系统​必须​确保​在​一个​固定​的​时间​内​响应​中断。 也就是说,​实​时​操作​系统​的​延迟​必须​是​已知​的​固定​的​值。

性能

一个​常见​的​误解​是​实​时​操作​系统​的​性能​高于​通用​操作​系统。 在​某些​情况​下,​因为​不需要​在​多个​应用​程序​和​服务​之间​进行​多​任务​操作,​实​时​操作​系统​的​性能​更好。​这​并不​是​绝对​的​规律。 实际​应用​程序​的​性能​取决​于​CPU​主​频、​内存​架构、​程序​特征,​等等。

即使​实​时​操作​系统​对​执行​速度​没有​直接​影响,​但是​它​与​通用​操作​系统​相比​具有​更​精确​和​更​可靠​的​时间​特性。

下一步

继续​阅读​下列​文章,​学习​如何​快速​使用​NI​硬件​和​软件​搭建​高级​的​实​时​系统:

>> 使用​NI​硬件​和​软件​创建​实​时​系统

>> 我​是否​需要​实​时​系统?