当前位置:文档之家› RTOS实时操作系统(Real Time Operating System)

RTOS实时操作系统(Real Time Operating System)

John Lee<j.y.lee@> 20:27:07上次讲到了 RTOS 的抢占机制对事件响应能力提高的帮助,避免了事件的丢失。

John Lee<j.y.lee@> 20:27:07上次讲到了 RTOS 的抢占机制对事件响应能力提高的帮助,避免了事件的丢失。

小道(569198569) 20:27:39老师辛苦John Lee<j.y.lee@> 20:27:45但光依靠 RTOS 的抢占机制,并不能做到完全不丢失事件,只是从一定程度上降低了丢失事件的机率。

丶砖家(1361439207) 20:28:16LEE丶砖家(1361439207) 20:28:14好复杂呀John Lee<j.y.lee@> 20:28:54上次的这个图:John Lee<j.y.lee@> 20:30:20是没有丢失事件了,但如果我们把 E2 的第 3 个事件提前一些:John Lee<j.y.lee@> 20:32:30对于这样情况,RTOS 提供了一些带有通信功能的同步对象,可以让应用程序构造软件缓冲机制,来保持突发事件。

John Lee<j.y.lee@> 20:33:19关于具体的实现方法,要等到我们学习完了 RTOS 同步机制和各种同步对象后,才能讨论。

John Lee<j.y.lee@> 20:34:24除此之外,还有其它一些系统设计时,需要仔细考虑的问题: 中断处理时间到底多长合适?等待设备事件产生,是否一定要用中断?如何划分任务?如何确定合适的调度算法?是否需要任务优先级?静态优先级能不能满足要求?系统节拍的频率多少合适?如何选则合适的同步对象?DsPower小灰灰(108430786) 20:35:56对这就是我的问题wei(34103820) 20:36:02John Lee<j.y.lee@> 20:36:07这些问题,都留到我们学习完 RTOS 后,再来讨论。

小道(569198569) 20:36:23wei(34103820) 20:36:02遵守纪律John Lee<j.y.lee@> 20:36:39现在讨论,很多同学没有基础,晕的。

John Lee<j.y.lee@> 20:37:12我们继续学习《嵌入式系统的实时概念》。

DsPower小灰灰(108430786) 20:38:13支持老师DsPower小灰灰(108430786) 20:38:14雪狼(982332664) 20:38:55我都晕乎了John Lee<j.y.lee@> 20:40:01我们上次停下来的地方,是:4.4.5 调度算法。

John Lee<j.y.lee@> 20:40:42基于优先权抢占的调度,和时间轮转调度,是两种最基本的调度算法。

wei(34103820) 20:40:52这正是俺想知道 的John Lee<j.y.lee@> 20:41:16基于优先权抢占的调度,可分为“静态优先级”和“动态优先级”两种,市面上大多数支持优先级调度的 RTOS,都属于静态优先级调度。

John Lee<j.y.lee@> 20:42:01虽然其中有些 RTOS 提供某些系统调用,允许运行时改变任务的优先级,但这仍然不能算动态优先级调度。

John Lee<j.y.lee@> 20:43:27那什么样的调度算法,算是动态优先级呢?John Lee<j.y.lee@> 20:44:17谁能说说?小道(569198569) 20:44:50根据情况需要调整优先级?John Lee<j.y.lee@> 20:45:08嗯,不错,靠谱。

John Lee<j.y.lee@> 20:45:13有一个界定:RTOS 具有管理事件截止期的机制,并以事件截止期作为任务优先级确定的依据。

HILL<fengok008@> 20:45:17John Lee<j.y.lee@> 20:46:03而那些提供了运行时改变任务优先级的调用的 RTOS,并没有提供事件截止期的相关机制。

John Lee<j.y.lee@> 20:47:12用户虽然可以在运行时改变任务优先级,但改变到的“目的”优先级,仍然在程序设计时定死的,而实际运行时,随着当前时点的系统处理状况的不同,最适合的优先级也会可能不同的。

John Lee<j.y.lee@> 20:48:49而动态优先级的 RTOS,当事件产生时,要求用户必须给系统提供一个相应的事件截止期,调度器会根据此截止期和当前正在处理的其它事件的截止期,为处理此事件的任务,综合计算出一个最合适的优先级。

John Lee<j.y.lee@> 20:50:04还有,具有动态优先级调度算法的 RTOS,一般不提供更改任务优先级的系统调用,也是基于同样的理由。

John Lee<j.y.lee@> 20:51:46接下来,我们看时间轮转调度:John Lee<j.y.lee@> 20:52:27关于时间轮转调度,书上说“不能满足实时系统的要求”。

这一个说法,我是有异议的。

John Lee<j.y.lee@> 20:53:26书上很笼统地说“任务的执行工作随其重要性变化”。

John Lee<j.y.lee@> 20:54:18很难服人的。

John Lee<j.y.lee@> 20:54:30什么样的系统算是“实时系统”?惊涛骇浪(578645627) 20:54:51单一任务惊涛骇浪(578645627) 20:55:24说错了John Lee<j.y.lee@> 20:55:21只要能在事件截止期之前,完成事件的处理,并且保证不丢失事件的事件处理系统,都可以认为是“实时系统”。

John Lee<j.y.lee@> 20:56:28时间轮转调度,虽然事件处理的任务,可能被分成了多个时间片执行。

John Lee<j.y.lee@> 20:57:05但系统中总的任务数量是确定的,设为 N,那么该任务的事件处理最大实际时间,就是:独占执行的时间 * N。

John Lee<j.y.lee@> 20:57:39John Lee<j.y.lee@> 21:00:08实际上,系统并不总是所有的事件都同时发生和处理,那些没有事件可处理的任务,应该处于阻塞状态等待事件。

John Lee<j.y.lee@> 21:01:51全部任务都同时处理,只是极限情况,是系统的最大负载情况。

John Lee<j.y.lee@> 21:01:59你可以认为,对于单独的事件处理任务,该系统的 CPU 速度被降低了 N 倍。

John Lee<j.y.lee@> 21:03:27如果你能保证 CPU 的速度被降低了 N 倍后,事件的处理依然不会越过其截止期,那么该系统的实时性,就可以保证。

John Lee<j.y.lee@> 21:05:02不知大家是否看出来了,这个时间轮转的调度,与“前后台”系统,有点差不多了。

John Lee<j.y.lee@> 21:06:41不知snoopyzz老师是否在?点评一下。

John Lee<j.y.lee@> 21:07:07前后台系统,我属于菜鸟。

小道(569198569) 21:07:31John Lee<j.y.lee@> 21:08:10当然,事情有不利的一面,就会存在有利的一面:你获得了不依赖于任务优先级的并行性,没有其它调度算法所存在的任务“饥饿”现象,宏观上相当于 N 个 CPU 核心。

John Lee<j.y.lee@> 21:09:344.5 对象John Lee<j.y.lee@> 21:09:54John Lee<j.y.lee@> 21:11:17对象这个概念,在 RTOS 中,我认为显得比较含糊,实际的应用中,一般都会指定对象的性质,如:任务对象,同步对象等等。

John Lee<j.y.lee@> 21:12:29而这些具体概念好像没什么共性,如果硬要加以抽象成更高层的“对象”概念,好像并不适当,而且在实际应用中,好像也没有什么用处。

John Lee<j.y.lee@> 21:12:54一家之言,一家之言。

『诗诺比』<i.am.a.coder.and.i.love.carrie@> 21:14:10刚来一会,前后台中用状态机或者包装成PT那样,也只能是实现协作式多任务,而时间片轮转 和 协作式 还是有明显区别的,协作式必须主动放弃CPU占用,时间片是到了点强制切换的。

John Lee<j.y.lee@> 21:14:56John Lee<j.y.lee@> 21:17:20这个也没啥好说的,就是为 RTOS 中的功能部件、模块等,安上了一个比较术语化的名字,如果要说这是一个更高层的抽象概念,我也是不很认同的。

John Lee<j.y.lee@> 21:19:12我们不是讲如何设计 RTOS,这些内容大家看看就行了,没啥好说的。

雁塔菜农<hotwc3@> 21:20:16出题,通知抢楼,谢谢!二把刀(117829819) 21:20:51我刚来的不知道咋回事呢21ic-dirtwillfly(157340886) 21:20:52福建凡善(56445165) 21:20:59我也来。

21ic-dirtwillfly(157340886) 21:20:59快到抢楼时间了HILL<fengok008@> 21:21:03准备雁塔菜农<hotwc3@> 21:21:07老师休息到9:30继续John Lee<j.y.lee@> 21:21:39课间提问:除了基于优先权抢占的调度和时间轮转调度外,还有一种调度算法:协作式,使用这种调度算法的系统,算不算 RTOS?为什么?惊涛骇浪(578645627) 21:22:46算,只要能在事件截止期之前,完成事件的处理,并且保证不丢失事件的事件处理系统,都可以认为是“实时系统”。

爱河(834436962) 21:23:04不算二把刀(117829819) 21:23:23这不是老是刚才说的吗爱河(834436962) 21:23:28属于前后台式Allen(15330302) 21:23:29实时系统不一定是OS吧Allen(15330302) 21:23:35属于前后台HILL<fengok008@> 21:23:49算 动态级别的RTOSJohn Lee<j.y.lee@> 21:24:28算或不算,都有说出信服的理由。

相关主题