搜索
bottom↓
回复: 26

《时间触发嵌入式系统设计模式》中“混合式调度器”疑问?

[复制链接]

出0入0汤圆

发表于 2011-1-6 11:28:39 | 显示全部楼层 |阅读模式
在书中写到
混合式调度器:
1、支持多个合作式调度的任务
2、支持一个抢占式任务(可以中断合作式任务),即使系统得的主要用途是运行一个1000ms的合作式任务,也可以用抢占式任务来保证系统能够在10ms内相应外部事件。

书中讲到,混合式调度器 没有使用上下文切换机制,那如何去中断正在运行的合作式任务呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-1-6 12:06:27 | 显示全部楼层
那个抢占任务是放在定时中断服务程序中做的,只要中断来,就去执行了。。。。

出0入0汤圆

 楼主| 发表于 2011-1-6 12:17:54 | 显示全部楼层
回复【1楼】ZacharyGuo
那个抢占任务是放在定时中断服务程序中做的,只要中断来,就去执行了。。。。
-----------------------------------------------------------------------

那意义不大呢,一个定时器也就支持一个抢占式任务。

还是用抢占式的调度器方便。

出0入0汤圆

发表于 2011-1-6 14:37:29 | 显示全部楼层
回复【楼主位】ljt8015

在书中写到
混合式调度器:
1、支持多个合作式调度的任务
2、支持一个抢占式任务(可以中断合作式任务),即使系统得的主要用途是运行一个1000ms的合作式任务,也可以用抢占式任务来保证系统能够在10ms内相应外部事件。
书中讲到,混合式调度器 没有使用上下文切换机制,那如何去中断正在运行的合作式任务呢?

-----------------------------------------------------------------------

一:只有一个抢占式任务,而且相当于优先级最高的,不会被中断
二:抢占式任务是个短任务,小于时间戳的50%为宜

出0入296汤圆

发表于 2011-1-6 16:55:19 | 显示全部楼层
其实这牵涉到一个概念,叫做状态机平面,或者叫做任务平面
给一个口头定义:
如果两个函数总不可能同时执行(比如顺次执行的),并能保证自己执行的原子性,那么这两个函数
处于同一个任务平面。

推论:
合作式调度器所有的任务都在主循环里面执行,都是依次执行的,都能保证自己的原子性。那么可以
说合作式调度器的任务都是在同一个任务平面的。

混合式调度器引入了一个中断,假定这个中断执行完成之前,不允许嵌套,并且有且只有一个这样的
中断,那么我们说,合作式调度器拥有两个任务平面:
显然,主循环里面执行的函数都属于同一个任务平面;中断处理程序里面执行的函数也都属于一个平面,
只不过是不同于主循环平面的另外一个世界。
不同平面间如果存在公共的存储器资源,那么对于这部分资源的访问就必须要进行临界区保护。

同一个任务平面里面的任务都是合作调度的——也就是顺次执行的,你方唱罢我登场。
不同平面的任务之间如果没有建立任何联系(比如信号亮通讯),那么执行顺序以及原子性都无法保证。

抢占式调度器是一个典型的多任务平面系统:
调度器自己的调度程序占用一个任务平面,可以说大部分系统服务都是可以被主观上判定为属于这个任务
平面的(根据定义你很容易找到这种说法的依据:1、不可能同时执行;2、原子性)
调度器调度的每一个任务都有自己独有的任务平面……所谓的任务切换,实际上就是任务平面切换,我喜
欢称之为宇宙切换,或者多维空间切换(很科幻,但是印象很深刻哈)

混合调度器的任务平面切换是硬件完成的,所以不需要额外代码。

我这么解释,你明白了么?

出0入0汤圆

发表于 2011-1-7 11:01:15 | 显示全部楼层
回复【2楼】ljt8015  
-----------------------------------------------------------------------
但是它耗的资源少,特别适合在单片机~

出0入0汤圆

 楼主| 发表于 2011-1-7 12:52:30 | 显示全部楼层
回复【4楼】Gorgon Meducer 傻孩子
其实这牵涉到一个概念,叫做状态机平面,或者叫做任务平面
给一个口头定义:
如果两个函数总不可能同时执行(比如顺次执行的),并能保证自己执行的原子性,那么这两个函数
处于同一个任务平面。
推论:
合作式调度器所有的任务都在主循环里面执行,都是依次执行的,都能保证自己的原子性。那么可以
说合作式调度器的任务都是在同一个任务平面的。
混合式调度器引入了一个中断,假定这个中断执行完成之前,不允许嵌套,并且有且只有一个这样的
中断,那么我们说,合作式调度器拥有两个任务平面:
显然,主循环里面执行的函数都属于同一个任务平面;中断处理程序里面执行的函数也都属于一个平面,
只不过是不同于主循环平面的另外一个世界。
不同平面间如果存在公共的存储器资源,那么对于这部分资源的访问就必须要进行临界区保护。
同一个任务平面里面的任务都是合作调度的——也就是顺次执行的,你方唱罢我登场。
不同......
-----------------------------------------------------------------------

总感觉和把所有程序放在 while(1){...} 中区别不大。

出0入296汤圆

发表于 2011-1-7 17:23:00 | 显示全部楼层
to 【6楼】 ljt8015
    还是有区别的,中断任务平面上的任务能够以一个精确的时间基准运行。

出0入0汤圆

 楼主| 发表于 2011-1-8 19:08:49 | 显示全部楼层
回复【7楼】Gorgon Meducer 傻孩子
to 【6楼】 ljt8015  
    还是有区别的,中断任务平面上的任务能够以一个精确的时间基准运行。
-----------------------------------------------------------------------

主循环里面执行的函数, 和把所有程序放在 while(1){...} 中区别不大。

中断任务也可以直接用定时器中断实现的。

出0入0汤圆

发表于 2011-7-16 22:36:35 | 显示全部楼层
我也觉得所谓的合作调度和超级循环没有多大的区别,如果有,是不是就下面2点:
1. 事先安排好每个任务的执行时间和频率
2. 可以利用原来的DELAY做其他任务(如果时间安排的好,任务分解的好的话)
不知道我的理解对不对
我现在有个东西肯定要用到操作系统了,但是想了很久都没想好怎么做

出0入0汤圆

发表于 2011-8-13 17:55:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-1-9 22:05:27 | 显示全部楼层
Gorgon_Meducer 发表于 2011-1-6 16:55
其实这牵涉到一个概念,叫做状态机平面,或者叫做任务平面
给一个口头定义:
如果两个函数总不可能同时执行 ...


请问能否推荐几本讲系统的书,中英文不限,最好是中文的。从最基本的开始的那种。
先介绍一下自己的水平,刚刚开始看STM32,最近在补习C,在校学生,准备考研,现在大三。。。然后。。。非计算机专业,没有学过数据结构等等。。。。算是零基础
请指教。。。。

出0入296汤圆

发表于 2013-1-10 10:45:00 | 显示全部楼层
seazhui 发表于 2013-1-9 22:05
请问能否推荐几本讲系统的书,中英文不限,最好是中文的。从最基本的开始的那种。
先介绍一下自己的水平 ...


先补习C,
然后看数据结构(看到树就差不多了),
然后看操作系统《Operating System》机械工业出版社:看理论级的,不需要以Linux为背景的,看完调度,内存管理,多线程通信。至于I/O管理,文件系统什么的就不用看了
-----
看完这些,再去看《深入浅出MFC》头六章就可以了
然后看《Object Oriented Programming with ANSI-C》
然后看《时间触发嵌入式系统设计模式》
...
不过走完这么多步骤,基本上也是3年以后的事情了……

出0入0汤圆

发表于 2013-1-10 16:59:36 | 显示全部楼层
Gorgon_Meducer 发表于 2013-1-10 10:45
先补习C,
然后看数据结构(看到树就差不多了),
然后看操作系统《Operating System》机械工业出版社: ...

....好的,谢~~~

出0入0汤圆

发表于 2013-1-11 11:14:46 | 显示全部楼层
只要你能用软件模拟一次中断过程,那么所谓的OS的任务切换也就可以完成。那本书中的抢占只是靠定时器中断内执行完成。

出0入0汤圆

发表于 2013-1-11 14:07:24 | 显示全部楼层
ljt8015 发表于 2011-1-8 19:08
回复【7楼】Gorgon Meducer 傻孩子
to 【6楼】 ljt8015  
    还是有区别的,中断任务平面上的任务能够以一 ...

如果不是抢占式的,任务一多,就没什么实时性可言,还不如不用操作系统,真接用while效率还高些。
非抢占式的在单片机上面也就一鸡肋。

出0入296汤圆

发表于 2013-1-11 18:40:08 | 显示全部楼层
icqw1983 发表于 2013-1-11 14:07
如果不是抢占式的,任务一多,就没什么实时性可言,还不如不用操作系统,真接用while效率还高些。
非抢占 ...

是不是鸡肋先不说,仍然有相当部分的平下中农要活在跑不了RTOS的平台下……你说咋办?
提出一个观点容易,就像毁树容易种树难,能详细说下这里“鸡肋”的背景平台环境,以及对应
环境下“鸡肋”的原因么?

出0入0汤圆

发表于 2013-1-11 21:29:13 | 显示全部楼层
合作调度器的任务执行时间很灵活呢~

出0入0汤圆

发表于 2013-3-5 21:35:26 | 显示全部楼层
我一开始是在定时器设定时标激活使能位而分频段执行各个任务,代码很简单。看了时间触发系统后,确实更容易移植和规划程序。while(1)虽然说是无缝连接,但是可以说谈不上是程序设计吧,很简单的例子就是不用中断来动态扫描数码管,超级循环结构只要稍微改一点,显示就不美观了。

出0入296汤圆

发表于 2013-3-7 00:13:40 | 显示全部楼层
304301959 发表于 2013-3-5 21:35
我一开始是在定时器设定时标激活使能位而分频段执行各个任务,代码很简单。看了时间触发系统后,确实更容易 ...

这说明你的代码并不是严格的非阻塞代码。

出0入0汤圆

发表于 2013-3-7 07:22:56 来自手机 | 显示全部楼层
回复2娄
抢占任务不一定放在时间中断里
我放其它中断里也行

出0入0汤圆

发表于 2015-4-20 22:02:06 | 显示全部楼层
Gorgon_Meducer 发表于 2013-1-10 10:45
先补习C,
然后看数据结构(看到树就差不多了),
然后看操作系统《Operating System》机械工业出版社: ...

《深入浅出MFC》???估计啃透这本就得好多基础

出0入0汤圆

发表于 2015-4-20 22:15:25 | 显示全部楼层
Gorgon_Meducer 发表于 2013-1-10 10:45
先补习C,
然后看数据结构(看到树就差不多了),
然后看操作系统《Operating System》机械工业出版社: ...

招聘什么助手?

出0入0汤圆

发表于 2015-4-26 16:36:53 | 显示全部楼层
Gorgon_Meducer 发表于 2013-1-10 10:45
先补习C,
然后看数据结构(看到树就差不多了),
然后看操作系统《Operating System》机械工业出版社: ...

看《深入浅出MFC》头六章?为什么呢

出0入0汤圆

发表于 2016-1-28 15:51:02 | 显示全部楼层
MARK:
先补习C,
然后看数据结构(看到树就差不多了),
然后看操作系统《Operating System》机械工业出版社:看理论级的,不需要以Linux为背景的,看完调度,内存管理,多线程通信。至于I/O管理,文件系统什么的就不用看了
-----
看完这些,再去看《深入浅出MFC》头六章就可以了
然后看《Object Oriented Programming with ANSI-C》
然后看《时间触发嵌入式系统设计模式》
...
不过走完这么多步骤,基本上也是3年以后的事情了……

出0入296汤圆

发表于 2016-1-28 18:30:06 | 显示全部楼层
dela2000 发表于 2016-1-28 15:51
MARK:
先补习C,
然后看数据结构(看到树就差不多了),

欲速则不达啊,共勉!

出0入0汤圆

发表于 2018-7-29 14:12:29 | 显示全部楼层
mark。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 05:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表