RTOS是什么意思?

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

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

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

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

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

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

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

目录

  • 1 设计理念
  • 2 任务调度
    • 2.1 排程算法
  • 3 RTOS举例
    • 3.1 開放原始碼&免费
    • 3.2 開放原始碼
    • 3.3 非開放原始碼
  • 4 参考文献

设计理念[编辑]

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

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

时间触发型设计往往比较严格地调度任务,具有更好的多任务处理能力。多个任务被不停地轮流调度,在宏观上,就相当于一个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]

開放原始碼&免费[编辑]

  • 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]

参考文献[编辑]

  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. ^ Context switching time. 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.

实时操作系统(RTOS)

  • 实时操作系统比较

开放源代码

  • Mynewt OS英语Apache Mynewt OS
  • BeRTOS英语BeRTOS
  • ChibiOS/RT
  • Contiki
  • Composite
  • Djyos
  • ECOS
  • ERIKA Enterprise英语ERIKA Enterprise
  • FreeRTOS
  • Fuchsia
  • FunkOS英语FunkOS
  • Nano-RK英语Nano-RK
  • NuttX
  • One os
  • QP
  • RIOT
  • RTAI英语RTAI
  • RTEMS
  • RTLinux
  • RT-Thread
  • seL4英语seL4
  • Talon DSP RTOS英语Talon DSP RTOS
  • TI-RTOS英语TI-RTOS
  • TinyOS
  • TockOS
  • TRON
  • Wombat OS英语Wombat OS
  • Xenomai
  • Zephyr

专有软件

  • 4690 OS英语4690 Operating System
  • DioneOS英语DioneOS
  • INTEGRITY
  • Junos OS英语Junos OS
  • LynxOS
  • µC/OS-II英语Micro-Controller Operating Systems
  • MQX英语MQX
  • Multiuser DOS英语Multiuser DOS
  • Nucleus RTOS
  • OpenComRTOS英语OpenComRTOS
  • OSE英语Operating System Embedded
  • OS-9英语OS-9
  • OS2000英语OS2000
  • PikeOS英语PikeOS
  • QNX
  • REX OS英语REX OS
  • ScreenOS英语ScreenOS
  • L4微内核系列
  • ThreadX
  • TPF英语Transaction Processing Facility
  • VRTX
  • VxWorks
  • Windows Embedded Compact
  • SylixOS

历史上的

  • DNIX英语DNIX
  • DSOS英语DSOS
  • EROS英语EROS (microkernel)
  • CoyotOS英语CoyotOS
  • FlexOS英语FlexOS
  • MERT/UNIX-RT英语Multi-Environment Real-Time
  • pSOS英语pSOS (real-time operating system)
  • RMX
  • RSX-11
  • RT-11英语RT-11
  • Sintran III英语Sintran III
  • Symbian
  • THEOS英语THEOS
  • UNOS英语UNOS (operating system)

  • 分类:实时操作系统

嵌入式系统

一般术语

  • 微控制器
  • ASIC/FPGA/SoC
  • 单板机
  • 引导程序
  • 交叉编译器
  • 板级支持包
  • 嵌入式操作系统
  • 嵌入式软件英语Embedded software
  • 嵌入式数据库英语Embedded database
  • 嵌入式hypervisor英语Embedded hypervisor
  • 内存占用英语Memory footprint
  • IoT
  • 消费电子产品
  • 最小硬件系统

固件及掌控

  • 封闭平台
  • 设计式缺陷
  • 残废软件
  • 厂商锁定英语Vendor lock-in
  • 第三方固件英语Custom firmware
  • 第三方路由器固件项目
  • 自制 (视频游戏)英语Homebrew (video games)
  • 消费电子产品破解英语Hacking of consumer electronics
  • Rooting (安卓)
  • iOS越狱

软件库

  • uClibc
  • Embedded GLIBC
  • musl
  • dietlibc

软件开发工具

  • BusyBox
  • Buildroot
  • BitBake
  • OpenEmbedded
  • Yocto计划
  • U-Boot
  • Almquist shell
  • Stand-alone shell英语Stand-alone shell

嵌入式操作系统

  • 嵌入式Linux
  • 移动设备Linux英语Linux for mobile devices
  • 轻量级Linux发行版
  • Windows IoT/Win CE
  • 实时操作系统

编程语言

  • 汇编语言
  • 嵌入式C语言
  • MISRA C
  • nesC英语nesC
  • Ada
  • Embedded Java英语Embedded Java
  • CAPL

  • 轻量级浏览器比较英语Comparison of lightweight web browsers
  • 开源计算硬件英语Open-source computing hardware
  • 开源机器人英语Open-source robotics