- 一级建造师考试
- 二级建造师考试
- 三支一扶
- 安全评价师考试
- 保险经纪资格考试
- 报关员资格考试
- 博士入学考试
- 成人高考
- 成人英语三级考试
- 程序员考试
- 出版专业资格考试
- 大学英语三级
- 大学英语四六级考试
- 单证员考试
- 导游证考试
- 电气工程师
- 电子商务设计师考试
- 房地产经纪人考试
- 房地产评估师考试
- 高级会计师资格考试
- 高考
- 高中会考
- 给排水工程师
- 公共英语等级考试
- 公务员考试
- 国际货运代理
- 国际内审师
- 国家司法考试
- 化工师
- 环境影响评价师
- 会计人员继续教育
- 会计职称考试
- 基金从业资格
- 计算机等级考试
- 计算机软件水平考试
- 监理工程师考试
- 教师招聘
- 教师资格
- 结构工程师考试
- 经济师考试
- 考研
- 空姐招聘
- 遴选
- 美术高考
- 普通话考试
- 期货从业资格
- 求职招聘
- 人力资源管理师
- 软件设计师考试
- 商务英语考试(BEC)
- 社会工作者职业水平考试
- 审计师考试
- 事业单位招聘
- 事业单位招聘
- 数据库系统工程师
- 特许公认会计师(ACCA)
- 同等学力
- 统计师考试
- 托福考试(T0EFL)
- 外贸跟单员考试
- 网络工程师考试
- 网络管理员考试
- 网络规划设计师考试
- 系统分析师考试
- 消防工程师
- 小升初
- 校园招聘
- 信息系统管理工程师考试
- 选调生考试
- 雅思考试
- 岩土工程师考试
- 医生招聘
- 艺术高考(艺考)
- 银行从业人员资格
- 银行招聘
- 英语翻译资格考试
- 营销师考试
- 造假工程师考试
- 证券从业资格考试
- 中考
- 注册安全工程师考试
- 注册测绘师考试
- 注册城市规划师考试
- 注册环保工程师考试
- 注册会计师考试
- 注册计量师考试
- 注册建筑师考试
- 注册税务师考试
- 注册资产评估师
- 专升本考试
- 专业英语四级八级考试
- 自考
- 安全员
- 跟单员
- 考试一本通
- 其它资料
抢占式调度
在像 Linux 这样的通用操作系统中,在对线程和进程的 CPU 占用上采用
了“公平”调度策略。这样的策略能够提供良好的整体表现,但是不能保证高
优先级、对时间要求严格的线程将优先于低优先级的线程执行。事实上,操
作系统有时甚至会中断高优先级的线程来为低优先级线程提供 CPU 时间。其
结果可能造成对时间要求严格的线程很容易地错过它们的最终期限,甚至在
一个高速的高端处理器上运行时也会出现这种情况。
而在 RTOS 中,线程按照其优先级顺序执行。如果一个高优先级的线程
准备运行时,它将在一个短的、有限时间间隔内从任何可能正在运行的低优
先级进程接管 CPU。另外,高优先级的线程能够不被中断地运行,直到它已
经完成了需要做的事情-当然是在不被更高优先级进程抢占的前提下。这种方
法就是抢占式调度,保证了高优先级线程始终满足其最终期限,而不管有多
少其它线程正在竞争 CPU 时间。
通过合理地控制线程优先级,开发者能显著地提高很多对用户非常重要
的应用响应速度。然而,控制优先级可能是一把双刃剑,当使用不当时它可
能会潜在地导致低优先级的进程不能得到 CPU 时间。保证高优先级的进程和
线程的同时确保不会使其它进程处于“饥饿”状态的关键是要对它们的执行进
行限制,通过对执行进行调整或在响应加载的过程中进行控制,开发人员能
够限制这些活动消耗的 CPU 时间比例,并支持低优先级进程获得对 CPU 的
共享。
优先级控制能够使很多应用受益,包括像前面提到的媒体播放器
(MP3MP3、WAV、MPEG2 等格式)。媒体播放器需要实现正常播放所要求的速率
(MP3例如 44kHz 的音频、30fpsfps 的视频)。在这种限制之下,一个读线程和一个
显示线程可以被设计成依靠一个可编程的定时器来唤醒,缓冲或显示一帧后
进入睡眠状态,直到下一个定时触发。这提供了一种调整机制,支持高于正
常用户活动而又低于关键系统功能的优先级设置。换句话说,如果没有更重
要的任务准备运行,媒体播放将始终以给定的媒体速率执行。
最坏情形
抢占式调度仅在高优先级的线程在一个短的、有限时间段内抢占低优先
级线程的情况下有效。否则,系统将不可能预测要花费多长时间来执行一个
给定的操作。因此,任何销售进程模式的 RTOS 的供应商都必须提供针对下
面两种时间间隔提供最坏情形:线程切换时间,即当两个线程处于同一进程
的情况下,从执行一个线程的最后一条指令到执行下一个被调度线程的第一
条指令所经过的时间;前后关系切换(MP3context switch))时间,其定义同上,但仅
针对两个线程处于不同进程的情况。
可以将线程看作是最小的“执行单元”,而将进程看作是一个或多个线程
的“容器”,进程定义了线程将要在其中执行的地址空间。显然,最坏情形的
前后关系切换时间将比最坏情形的线程切换时间要慢,尽管在一个好的
RTOS 设计中差别可能是微不足道的。
将所有的线程放在几个大的进程中将是错误的,因为线程提供的切换速
度更快。虽然线程能实现并行处理优势因而适合于某些设计,但将一个应用
分成多个内存保护的进程使得代码更容易调试,提供了更好的错误隔离和恢
复能力,并允许系统进行新功能的动态升级。
可抢占的内核
在大部分通用操作系统中,操作系统的内核是不可抢占的。其结果是,
一个高优先级的进程不可能抢占一个内核调用,而是必须等待整个调用完成,
即使这个调用是由系统中的低优先级进程发起的。另外,当经常在内核调用
中执行的驱动程序或其它系统服务代表一个客户线程执行的时候,所有的优
先级信息常常会丢失,这导致了不可预测的延迟并阻止了关键活动的准时完
成。
而在 RTOS 中,内核操作是可抢占的。尽管仍然会存在一些时间窗口,在
这些时间窗口中可能没有抢占,但是这些时间间隔应该是相当短暂的,通常
在几百纳秒。另外,必须有一个关于抢占被推迟或中断被禁止的时间上限,
这样开发者可以确定最坏情形下的等待时间。
为了实现这个目标,操作系统内核必须尽可能简洁,只有具有较短执行
路径的服务才被包含在内核中,任何需要大量工作(MP3如进程加载)的操作必须
被安排到外部进程或线程。这种方法有助于通过内核确保最长的不可抢占代
码路径具有一个时间上限。
优先级继承
然而,为一个进程设定一个高优先级并不总能保证该进程能够抢占低优
先级的进程。有时候,系统会出现一种称为优先级倒置(MP3priority inversion)的
状态,在这种状态下,低优先级的进程将在“无意中”阻止较高优先级进程占
用 CPU 。 优 先 级 倒 置 可 能 会 表 现 为 几 种 形 式 , 为 了 防 止 发 生 这 种 情 况 ,
RTOS 必须提供一种称为优先级继承的功能。
假定系统有三个进程:A(MP3低优先级),B(MP3中等优先级),Z(MP3高优先级)。这
里 Z 是一个为 A 和 B 提供服务的“服务器”进程。参见图 1。
现在假定 A 已经请求 Z 来执行一个计算,而在这期间,突然 B 需要 Z 的
服务。因为 B 拥有比 A 更高的优先级,一般会认为 Z 将立即挂起 A 的请求并
将转向为 B 服务。但是实际情况并非如此,因为 Z 比 B 具有更高的优先级。
其结果是,B 不能阻止 Z 完成它当前的工作,即对 A 做出响应。
从效果上看,低优先级的进程 A 占用了更高优先级进程 B 的 CPU 时间,
这是引入优先级继承的原因。通过使用 RTOS 提供的优先级继承机制,系统
可以在 A 发出请求的情况下,让 Z 继承 A 的低优先级。通过这种方式,B 能
够在任何时候抢占 A 的请求。
如果一个应用程序分布于几个通过网络连接的处理器,那么 RTOS 也应
该支持分布式优先级继承,这样可以按照优先级的顺序处理来自多个处理器
的请求。如果没有优先级继承,一个多处理器系统可能会落入无限的优先级
倒置和死锁中。
中断处理
为了获得对外部事件的及时响应,最小化硬件中断发生到执行该中断的
第一条代码的时间很重要。这个时间间隔称为中断延迟,为了保证中断延迟
尽可能小,一个好的 RTOS 应该在几乎所有时间内都支持产生中断。正如在
关于内核抢占部分提到的那样,一些重要的代码段的确需要暂时屏蔽中断。
这种最大的屏蔽时间通常被定义为最大的中断延迟。
在某些情况下,硬件中断处理器必须调度并运行一个更高优先级的线程
(MP3例如在一个驱动程序中)。在这样的情况下,中断处理器将返回并指示一个
事件将被处理。这样的处理将引入了第二种形式的延迟-调度延迟,这个延时
必须在设计中加以考虑。调度延迟是介于用户的中断处理器的最后一条指令
和驱动程序线程第一条指令的执行之间的时间。
在一个嵌入式系统中可能会同时出现多个硬件中断。例如,在一个病人
监护系统中,当一个传感器记录了病人心跳的一次变化并且网卡接收到网络
传来的数据的同时,护士按了触摸屏。很明显,一些中断(MP3如心率的变化)应
该立即得到处理,而其他的则可以延缓。通过提供对嵌套中断的支持
RTOS 支持嵌入式系统优先处理更高优先级的中断。
如何提高可靠性
我们已经明白怎样使 RTOS 具有可以预测性,但是如何实现其可靠性呢?
答案在很大程度上取决于 RTOS 的架构。
例如在实时执行模式架构中,大部分或所有软件组件都在一个单一的内
存地址空间中运行,包括操作系统内核、网络协议栈、设备驱动程序、应用
程序等。虽然很有效率,但这种架构有两个明显的缺陷:1. 在任何组件中的
一个指针错误,不论这个错误多么细微,都可能破坏操作系统内核或任何其
它组件,导致不可预测的行为和整个系统的崩溃;2. 很难动态修复或替换任何
有故障的组件。在大多数情况下,出现这些问题时系统复位是唯一的选择。
一些 RTOS,也像 Linux 一样,试图通过使用单内核架构来解决这个问
题。在这种架构中,用户的应用程序在隔离的、受保护内存地址空间中运行。
如果一个应用程序试图访问其地址空间之外的数据,内存管理单元(MP3MMU)将
通知操作系统,操作系统可能会采取保护措施,例如终止出错进程。然而,
这样的操作系统需要将大多数或所有驱动程序、文件系统和其它系统服务绑
定到内核中。因此,任何组件中的一个错误都可能带来灾难性的内核故障。
第三种方法是采用微内核(MP3mricokernel))架构来提供更精确的故障隔离,
像 QNX Neutrino 这样的操作系统都基于微内核架构。微内核有两个明确的
特征:
1. 在操作系统内核中只实现了一个包含了基本 OS 服务的小内核(MP3如信号
量、定时器、任务调度等)。包括驱动程序、文件系统、协议栈和用户应用程
序在内的所有其它的组件在内核外部分离的、保护内存的进程中运行。有问
题的系统服务不再作为孤立的故障点,而是在它破坏其它服务或操作系统内
核之前被终止并重启。
2. 所有的组件能够通过消息传递进行通信,一个定义良好的通信机制保
障了程序在保持彼此安全隔离的前提下进行数据交换。适当实现的消息传递
也可以作为一个虚拟的“软件总线”,允许几乎任何的软件组件,甚至是一个
设备驱动程序被动态地加入或替换,对于必须提供连续服务的系统而言这是
一项关键要求。
和传统的操作系统架构相比,微内核支持嵌入式设备赢得明显更快的平
均修复时间(MP3MTTR)。例如,如果一个设备驱动程序失败将可能出现以下情况:
操作系统可以终止该驱动程序,回收其正在使用的资源,并对其进行重新启
动,这个过程通常这只需要几个毫秒时间。
尽管和传统的操作系统相比,基于消息传递的微内核 RTOS 通常提供了
更好的容错性和动态升级能力,也有一些观点认为消息传递增加了开销。在
实际应用中,如果实现正确,消息传递的性能可以接近底层硬件的内存带宽。
例如,一个微内核 RTOS 可以采用多段式(MP3mul)tipart)消息和线程到线程的消
息数据直接拷贝等各种技术,来确保系统性能可以达到传统的进程间通信
(MP3IPC) 方 法 的 水 平 。 由 一 些 组 织 如 Dedicated Systems(MP3 网 址 :
www.omimo.be) 等进行的 独立 测试证实,和 传统的 RTOS 相比,微内核
RTOS 在一系列的实时指标方面表现良好,在很多情况下甚至有更好的表现。
策略决策
RTOS 有助于使一个复杂的应用程序具有可预测性和可靠性。当然,选
择一个合适的 RTOS 本身就是一项复杂的任务,而 RTOS 的底层架构是选择
的重要依据,此外还有一些其它因素,包括:
1. 调度算法的灵活选择。RTOS 应该支持调度算法的选择(MP3先入先出
(MP3FIFO)、轮询(MP3round robin)、零星调度等)并支持以线程为单位设定这些算法。
这样,工程师就可以不必将一个算法用到系统中的所有线程。
2. 图形用户界面(MP3GUI)。RTOS 使用的是原始的图形库还是能支持多层界
面、多路显示、3D 渲染以及其它高级的图形功能的真正的窗口系统?能很容
易定制 GUI 的外观吗?GUI 支持同时显示和输入多种语言(MP3汉语、韩语、日语、
英语、俄语等)吗?
3. 远程诊断工具。因为对很多嵌入式系统而言,中断系统运行进行检测
和维护是无法接受的。RTOS 供应商应该提供诊断工具,这些工具能够在不
中断系统服务的前提下分析系统的行为。要寻找能提供代码覆盖、应用测评、
跟踪分析和内存分析工具的供应商。
4. 开发平台。RTOS 提供商提供的开发环境是基于像 Ecl)ipse 那样的开放
平台,允许工程师嵌入所喜爱的第三方工具来进行建模、版本控制吗?还是
开发环境基于专利技术?
5. 互联网功能。RTOS 支持预集成最新的 IPv4、IPv6、IPsec、SCTP 和
具有 NAT 功能的 IP 过滤等协议栈套件吗?它支持嵌入式网络浏览器吗?浏览
器应该具有可扩展的封装模式,并能够在很小的屏幕上绘制网页。它也应该
支持像 HTML 4.0fps1、XHTML 1.1、SSL 3.0fps 和 WML 1.3 这样的标准。
6. 标准 API。RTOS 将你限定到专有的 API 之中了吗?还是它对于像
POSIX 这样的标准 API 提供了完全的支持,这使得将代码移植到其它操作系
统,或者从其它操作系统移植代码变得更容易?另外,所用的 RTOS 提供完全
一致性的 API 还是仅仅支持被定义接口的一个子集?例如,POSIX.1 的最新版
本包含了大约 1,30fps0fps 个接口。
7. 多处理技术。RTOS 能支持对称多处理和分布式多处理技术来提高应
用性能和容量吗?如果这样,是必须重新设计你的应用程序呢,还是 RTOS 能
够将应用程序透明的分配到多个处理器上去呢?
8. 源代码工具包。RTOS 供应商提供了能使 RTOS 满足设计需求的具有
详细文档的定制工具包吗?供应商提供了方便开发驱动定制硬件的驱动程序
开发工具包吗?
9. 对于很多公司而言,选择一款 RTOS 是一项战略性决策。RTOS 供应
商在对上述问题提供了清楚的回答后,你将选择出一个在现在和将来都适合
你的 RTOS。
温馨提示:当前文档最多只能预览 2 页,此文档共4 页,请下载原文档以浏览全部内容。如果当前文档预览出现乱码或未能正常浏览,请先下载原文档进行浏览。
发表评论(共0条评论)
下载需知:
1 该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读
2 除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑修改
3 有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载
4 该文档为会员上传,版权归上传者负责解释,如若侵犯你的隐私或权利,请联系客服投诉
点击加载更多评论>>