搜索
bottom↓
回复: 26

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

[复制链接]

出0入0汤圆

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

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

出0入0汤圆

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

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

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

出0入0汤圆

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

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

出0入0汤圆

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

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

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

本版积分规则

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

GMT+8, 2024-5-9 05:34

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

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