fbpx
维基百科

实时操作系统

实时操作系统Real-time operating system, RTOS),又稱即时操作系统,它會按照排序執行、管理系統資源,並為開發應用程式提供一致的基礎。

实时操作系统与一般的操作系统相比,最大的特色就是「实时性[1],如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。

设计实时操作系统的首要目标不是高的吞吐量,而是保证任务在特定时间内完成,因此衡量一个实时操作系统坚固性的重要指标,是系统从接收一个任务,到完成该任务所需的时间,其时间的变化称为抖动。可以依抖动將实时操作系统分為兩種:硬实时操作系统及软实时操作系统,硬实时操作系统比软实时操作系统有更少的抖动:

  • 硬实时操作系统必须使任务在确定的时间内完成。
  • 软实时操作系统能让绝大多数任务在确定时间内完成。[2]

实时操作系统与一般的操作系统有着不同的调度算法。普通的操作系统的调度器对于线程优先级等方面的处理更加灵活;而实时操作系统追求最小的中断延时英语Interrupt latency线程切换延时[3]

通常都會有最基礎的內核,以及外加上去的模組,像是檔案系統網路協定堆疊和應用、裝置驅動程式等模組。

RTOS的內核通常會有:排程器物件服务

设计理念

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

  • 事件驱动型。当一个高优先级的任务需要执行时,系统会自动切换到这个任务。这种根据优先级调度任务的方式称为抢占式任务处理
  • 时间触发型。每个任务在各自设定好的的时间间隔内重复、轮流调度。

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

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

任务调度

在典型的设计中[來源請求],一个任务有以下三种状态:

  1. 正在运行(Running,正在CPU中执行)
  2. 待命(Ready,等待执行)
  3. 阻塞(Blocked,任务暂停,等待一个事件的发生,例如接收一组数据)

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

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

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

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

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

排程算法

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

  • 合作式调度
  • 抢占式调度
    • Rate-monotonic scheduling
    • Round-robin scheduling
    • Fixed priority pre-emptive scheduling, an implementation of preemptive time slicing
    • Fixed-Priority Scheduling with Deferred Preemption
    • Fixed-Priority Non-preemptive Scheduling
    • Critical section preemptive scheduling
    • Static time scheduling
  • Earliest Deadline First approach
  • Stochastic digraphs with multi-threaded graph traversal

RTOS举例

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

開放原始碼&免费

開放原始碼

非開放原始碼

参考文献

  1. ^ Response Time and Jitter. [2013-08-16]. (原始内容于2014-04-14). 
  2. ^ Tanenbaum, Andrew. Modern Operating Systems. Upper Saddle River, NJ: Pearson/Prentice Hall. 2008: 160. ISBN 978-0-13-600663-3. 
  3. ^ RTOS Concepts. [2013-08-16]. (原始内容于2013-04-06). 
  4. ^ . Segger Microcontroller Systems. [2009-12-20]. (原始内容存档于2011-07-16). 
  5. ^ RTOS performance comparison on emb4fun.de. [2013-08-16]. (原始内容存档于2013-01-11). 
  6. ^ Karim Yaghmour; Jon Masters, Gilad Ben-Yossef & Philippe Gerum. Building Embedded Linux Systems. O’Reilly Media, Inc. : 354. ISBN 978-0-596-52968-0. 

实时操作系统, real, time, operating, system, rtos, 又稱即时操作系统, 它會按照排序執行, 管理系統資源, 並為開發應用程式提供一致的基礎, 与一般的操作系统相比, 最大的特色就是, 实时性, 如果有一个任务需要执行, 会马上, 在较短时间内, 执行该任务, 不会有较长的延时, 这种特性保证了各个任务的及时执行, 设计的首要目标不是高的吞吐量, 而是保证任务在特定时间内完成, 因此衡量一个坚固性的重要指标, 是系统从接收一个任务, 到完成该任务所需的时间, 其时间的变化称为抖动. 实时操作系统 Real time operating system RTOS 又稱即时操作系统 它會按照排序執行 管理系統資源 並為開發應用程式提供一致的基礎 实时操作系统与一般的操作系统相比 最大的特色就是 实时性 1 如果有一个任务需要执行 实时操作系统会马上 在较短时间内 执行该任务 不会有较长的延时 这种特性保证了各个任务的及时执行 设计实时操作系统的首要目标不是高的吞吐量 而是保证任务在特定时间内完成 因此衡量一个实时操作系统坚固性的重要指标 是系统从接收一个任务 到完成该任务所需的时间 其时间的变化称为抖动 可以依抖动將实时操作系统分為兩種 硬实时操作系统及软实时操作系统 硬实时操作系统比软实时操作系统有更少的抖动 硬实时操作系统必须使任务在确定的时间内完成 软实时操作系统能让绝大多数任务在确定时间内完成 2 实时操作系统与一般的操作系统有着不同的调度算法 普通的操作系统的调度器对于线程优先级等方面的处理更加灵活 而实时操作系统追求最小的中断延时 英语 Interrupt latency 和线程切换延时 3 通常都會有最基礎的內核 以及外加上去的模組 像是檔案系統 網路協定堆疊和應用 裝置驅動程式等模組 RTOS的內核通常會有 排程器 物件 服务 目录 1 设计理念 2 任务调度 2 1 排程算法 3 RTOS举例 3 1 開放原始碼 amp 免费 3 2 開放原始碼 3 3 非開放原始碼 4 参考文献设计理念 编辑通常 实时操作系统分为两大类 事件驱动型 当一个高优先级的任务需要执行时 系统会自动切换到这个任务 这种根据优先级调度任务的方式称为抢占式任务处理 时间触发型 每个任务在各自设定好的的时间间隔内重复 轮流调度 时间触发型设计往往比较严格地调度任务 具有更好的多任务处理能力 多个任务被不停地轮流调度 在宏观上 就相当于一个CPU同时执行多个任务 在过去 CPU在切换任务时往往需要多个机器周期 在这段时间内 CPU不能处理其他任何任务 例如 一个20 MHz的摩托罗拉68000处理器 1980年代后期 在切换任务时需要花费20微秒 相比之下 一个100 MHz的ARM架构的处理器 2008年之后的 只需要3微秒 4 5 因此 早期的实时操作系统通过减少任务切换次数来避免消耗过多CPU时间 任务调度 编辑在典型的设计中 來源請求 一个任务有以下三种状态 正在运行 Running 正在CPU中执行 待命 Ready 等待执行 阻塞 Blocked 任务暂停 等待一个事件的发生 例如接收一组数据 由于CPU在某个时间只能执行一个任务 大部分任务 在大部分时间 处于阻塞或待命状态 可能会有大量项目在待命列表里等待执行 这取决于系统所需的任务数量以及调度器的类型 通常情况下 对于简单的时间触发式调度器来说 待命任务列表的数据结构的设计要尽可能缩短最坏情况下 程序在调度器关键部分的执行时间 以防止其他任务一直在待命列表中 无法及时执行 因此 在这种调度器中 应尽可能避免抢占式任务 甚至应该关闭调度器之外的所有中断 当然 待命任务列表的数据结构也应根据这个系统需要的最大任务数量做进一步的优化 如果待命任务列表中的任务较多 双向链表是一个比较好的选择 如果待命任务列表通常包含少量任务 但偶尔会出现较多任务 任务应该根据优先级排序 这样一来 要寻找最高优先级的任务 就不必要在整个列表中一个一个地寻找 而插入任务需要从列表中的第一个任务开始 向后寻找 直到找到比要插入的任务优先级低的任务 然后插入到该任务之前 如果没有找到优先级更低的任务 就插入到任务列表末尾 在寻找任务列表 准备插入任务的过程中 应该注意避免抢占 长的关键部分应分为多个小的部分分别执行 如果在寻找任务列表 要插入低优先级任务的时候 一个中断发生使高优先级任务进入待命状态 高优先级任务应该在低优先级任务被插入之前立刻被插入列表和执行 在更先进的系统中 实时任务和许多非实时任务共享运算资源 这时候待命任务列表会变得很长 在这种系统中 待命任务列表可能不适合用链表的结构 排程算法 编辑 一些实时操作系统中常用的算法 合作式调度抢占式调度 Rate monotonic scheduling Round robin scheduling Fixed priority pre emptive scheduling an implementation of preemptive time slicing Fixed Priority Scheduling with Deferred Preemption Fixed Priority Non preemptive Scheduling Critical section preemptive scheduling Static time scheduling Earliest Deadline First approach Stochastic digraphs with multi threaded graph traversalRTOS举例 编辑WinCE VxWorks mC OS 等运用较广 Linux是作为通用操作系统开发的 其内核在实时处理能力上先天不足 部分网络开发社区将其经过改造能在一定程度上成为实时操作系统 6 開放原始碼 amp 免费 编辑 Raw OS 1 页面存档备份 存于互联网档案馆 CoOS 2 開放原始碼 编辑 SylixOS 3 页面存档备份 存于互联网档案馆 RT Thread 4 页面存档备份 存于互联网档案馆 eCos Fiasco OC 5 页面存档备份 存于互联网档案馆 FreeRTOS 6 页面存档备份 存于互联网档案馆 Phoenix RTOS Nut OS 7 页面存档备份 存于互联网档案馆 Prex RTAI RTEMS RTLinux SHaRK 8 页面存档备份 存于互联网档案馆 TRON Project Xenomai 9 CoOS 10 One OS 11 页面存档备份 存于互联网档案馆 ChibiOS非開放原始碼 编辑 Ardence RTX BeOS ChorusOS DNIX DMERT e Tkernel HOPEN OS embOS Segger INTEGRITY ITRON LynxOS MERT MicroC OS II MQX RTOS 12 页面存档备份 存于互联网档案馆 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 13 页面存档备份 存于互联网档案馆 SINTRAN III Symbian OS ThreadX VRTX VxWorks Windows CE µnOS UNIX RTR REX HP 1000 RTE 14 参考文献 编辑 Response Time and Jitter 2013 08 16 原始内容存档于2014 04 14 Tanenbaum Andrew Modern Operating Systems Upper Saddle River NJ Pearson Prentice Hall 2008 160 ISBN 978 0 13 600663 3 RTOS Concepts 2013 08 16 原始内容存档于2013 04 06 Context switching time Segger Microcontroller Systems 2009 12 20 原始内容存档于2011 07 16 RTOS performance comparison on emb4fun de 2013 08 16 原始内容存档于2013 01 11 Karim Yaghmour Jon Masters Gilad Ben Yossef amp Philippe Gerum Building Embedded Linux Systems O Reilly Media Inc 354 ISBN 978 0 596 52968 0 引文使用过时参数coauthors 帮助 取自 https zh wikipedia org w index php title 实时操作系统 amp oldid 75120906, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。