族谱网 头条 人物百科

实时操作系统

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:771
转发:0
评论:0
设计理念通常,实时操作系统分为两大类:事件驱动型。当一个高优先级的任务需要执行时,系统会自动切换到这个任务。这种根据优先级调度任务的方式称为抢占式任务处理。时间触发型。每个任务在各自设定好的的时间间隔内重复、轮流调度。时间触发型设计往往比较严格地调度任务,具有更好的多任务处理能力。多个任务被不停地轮流调度,在宏观上,就相当于一个CPU同时执行多个任务。在过去,CPU在切换任务时往往需要多个机器周期,在这段时间内,CPU不能处理其他任何任务。例如,一个20MHz的摩托罗拉68000处理器(1980年代后期),在切换任务时需要花费20微秒。(相比之下,一个100MHz的ARM架构的处理器(2008年之后的)只需要3微秒。)因此,早期的实时操作系统通过减少任务切换次数来避免消耗过多CPU时间。任务调度在典型的设计中,一个任务有以下三种状态:正在运行(Running,正在CPU中执行)待命(Rea...

设计理念

通常,实时操作系统分为两大类:

事件驱动型。当一个高优先级的任务需要执行时,系统会自动切换到这个任务。这种根据优先级调度任务的方式称为抢占式任务处理。

时间触发型。每个任务在各自设定好的的时间间隔内重复、轮流调度。

时间触发型设计往往比较严格地调度任务,具有更好的多任务处理能力。多个任务被不停地轮流调度,在宏观上,就相当于一个CPU同时执行多个任务。

在过去,CPU在切换任务时往往需要多个机器周期,在这段时间内,CPU不能处理其他任何任务。例如,一个20 MHz的摩托罗拉68000处理器(1980年代后期),在切换任务时需要花费20微秒。(相比之下,一个100 MHz的ARM架构的处理器(2008年之后的)只需要3微秒。) 因此,早期的实时操作系统通过减少任务切换次数来避免消耗过多CPU时间。

任务调度

在典型的设计中,一个任务有以下三种状态:

正在运行(Running,正在CPU中执行)

待命(Ready,等待执行)

阻塞(Blocked,任务暂停,等待一个事件的发生,例如接收一组数据)

由于CPU在某个时间只能执行一个任务,大部分任务,在大部分时间,处于阻塞或待命状态。可能会有大量项目在待命列表里等待执行,这取决于系统所需的任务数量以及调度器的类型。

通常情况下,对于简单的时间触发式调度器来说,待命任务列表的数据结构的设计要尽可能缩短最坏情况下,程序在调度器关键部分的执行时间,以防止其他任务一直在待命列表中,无法及时执行。因此,在这种调度器中,应尽可能避免抢占式任务,甚至应该关闭调度器之外的所有中断。当然,待命任务列表的数据结构也应根据这个系统需要的最大任务数量做进一步的优化。

如果待命任务列表中的任务较多,双向链表是一个比较好的选择。如果待命任务列表通常包含少量任务,但偶尔会出现较多任务,任务应该根据优先级排序。这样一来,要寻找最高优先级的任务,就不必要在整个列表中一个一个地寻找。而插入任务需要从列表中的第一个任务开始,向后寻找,直到找到比要插入的任务优先级低的任务,然后插入到该任务之前;如果没有找到优先级更低的任务,就插入到任务列表末尾。

在寻找任务列表,准备插入任务的过程中,应该注意避免抢占。长的关键部分应分为多个小的部分分别执行。如果在寻找任务列表,要插入低优先级任务的时候,一个中断发生使高优先级任务进入待命状态,高优先级任务应该在低优先级任务被插入之前立马被插入列表和执行。

在更先进的系统中,实时任务和许多非实时任务共享运算资源,这时候待命任务列表会变得很长。在这种系统中,待命任务列表可能不适合用链表的结构。

调度算法

一些实时操作系统中常用的算法:

合作式调度

抢占式调度

Earliest Deadline First approach

Stochastic digraphs with multi-threaded graph traversal

RTOS举例

WinCE、VxWorks、μC/OS-Ⅱ等运用较广。Linux是作为通用操作系统开发的,其内核在实时处理能力上先天不足,部分网络开发社区将其经过改造能在一定程度上成为实时操作系统。

开放源代码&免费

Raw-OS[1]

CoOS[2]

开放源代码

RT-Thread[3]

eCos

Fiasco (L4 clone)[4]

FreeRTOS

Phoenix-RTOS

Nut/OS[5]

Prex

RTAI

RTEMS

RTLinux

SHaRK[6]

TRON Project

Xenomai[7]

CoOS[8]

非开放源代码

Ardence RTX

BeOS

ChorusOS

DNIX

DMERT

e-Tkernel

HOPEN OS

embOS (Segger)

INTEGRITY

ITRON

LynxOS

MERT

MicroC/OS-II

MQX RTOS[9]

Nucleus

OS-9

OSE

OSEK/VDX

OSEKtime

PDOS

Phar Lap ETS

PikeOS

Portos

pSOS

QNX

RMX

RSX-11

RT-11

RTOS-UH

RTXC

Salvo RTOS[10]

SIAN III

Symbian OS

ThreadX

VRTX

VxWorks

Windows CE

µnOS

UNIX-RTR

REX

HP-1000/RTE[11]


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 北条实时
参考安田元久编‘镰仓・室町人名事典コンパクト版’(新人物往来社、1990年)
· 操作系统
历史各类平台上操作系统的功能演化综观电脑之历史,操作系统与电脑硬件的发展息息相关。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。从最早的批量模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。其他方面的演变也类似于此。另一方面,在个人电脑上,个人电脑之操作系统因袭大型机的成长之路,在硬件越来越复杂、强大时,也逐步实践以往衹有大型机才有的功能。总而言之,操作系统的历史就是一部解决电脑系统需求与问题的历史。1980年代前IBMSystem/360,大型主机的经典之作第一部电脑并没有操作系统。这是由于早期电脑的创建方式(如同建造机械算盘)与性能不足以运行如此程序。但在1947年发明了晶体管,以及莫里斯·威尔克斯发明的微程序方法,使得电脑不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程...
· 深度操作系统
历史与发展Deepin系统源于HiweedLinux(Hiwix)系统,Hiwix0.1最早发布于2004年2月28日,是一款比Ubuntu历史还要悠久的Linux发行版。Deepin系统经历了Hiwix、HiweedLinux和LinuxDeepin多次更名的同时,默认使用的桌面环境上也不断的变化,Deepin早期曾使用过IceWM、xfce、LXDE和Gnome,但是最终确定使用自行开发的DeepinDesktopEnvironment。关于基于的底层系统上,也经历了Morphix、Debian和Ubuntu的多次变化。发行版本第五届开发者与用户大会上,深度科技副总经理王勇表示为了让用户更快的体验正能量,Deepin不再像早期一样一年发行两次,也不再跟随一年发行一次的步调,而是改为准备就绪后才发行,版本号也不再与年份有相关,并且三个月会进行一次小幅更新。深度发展之软件项目Deepin桌...
· 移动操作系统
历史SymbianOS是早期智能手机最流行的系统,图为使用S80平台的Nokia9300在移动操作系统出现前,移动设备如手提电话一般是使用嵌入式系统运作。1993年,IBM推出了首台智能手机IBMSimon。其后Palm及微软先后于1996年推出PalmOS及WindowsCE,开始移动操作系统争霸的局面。诺基亚、黑莓公司在手机上发展了移动操作系统,以争夺市场。2007年苹果推出iPhone,搭载iOS操作系统,着重于应用触控式面板,造成用户界面与用户体验的改进。9月,谷歌发表开放手持设备联盟,并推出Android操作系统。Android的发布造成苹果和谷歌之间的裂痕,最终导致谷歌公司首席运行官埃里克·施密特辞去苹果董事会职务。由于苹果的iOS以及谷歌的Android推波助澜,至2010年5月,智能手机有爆量的增加,估计有17.3%的手机出现。截至2011年1月,谷歌持有33.3%的全球智...
· 嵌入式操作系统
参见嵌入式图形界面

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信