打印

个人对单片机多任务操作系统的研究,欢迎拍砖

[复制链接]
4163|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
singleywy|  楼主 | 2010-9-18 08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于51单片机多任务的研究

单片机多任务分为抢占式多任务系统,以及按时间段轮流运行的操作系统
以下分析各种方式的优缺点:
⒈抢占式的优点是,优先级高的任务能够得到及时的响应,实时性比较高
其也存在着较大的缺点:
1)
若优先级高的任务因阻塞迟迟不肯放弃CPU,那么优先级低的任务无法得到运行,实时性反而大打折扣;

2)
其次是,如果优先级高的任务轮流运行,那么处于底层的低任务将无法得到运行,而实时任务的要求是不能让任何任务无限制的等待,必须要在确定的时间内完成,这与RTOS理论相矛盾;

3)
再者是,优先级高的任务必须要在短时间内完成,同时不能够被打断,其他优先级较低任务因等待时间到或者等待信号来临需要唤醒,但如果它的优先级低于当前任务,则无法得到及时响应;


2.
时间片轮流的优点是,

每个任务都是平等的,都可以的到响应的时间片段,可以通过优先级的不同而确定,不同的时间片段,一般来说,优先级高的任务单位时间内得到的时间片段对多,优先级低的得到最少,这样,无论什么情况,任务都能够在确定的时间内响应,一般来说,轮流的切换时间对于响应延迟来说是可以接受的,但实时性要求高、且任务多的时候,这样的系统就不再适合了。
存在的缺点:
1)
优先级高的任务虽然能够得到最多的时间片段,但不一定在每个时间片段内都能够得到有效的利用,有可能任务以完成了,或者因缺少资源、等待某个信号,而处于等待状态,这样白白浪费时间占用的CPU,使得CPU的利用率不高;

2)
有些任务因需要及时响应,但因任务循环周期还没有轮到自己,只好暂时不响应,如果任务过多,轮流时间加长,有可能导致该任务因在响应有效期内得不到响应,而不去进行操作;

3)
当任务在规定时间内完成时,还有很多剩余时间,应该调用任务切换程序进行切换,时间片重置

3.基于以上的各种方式的优缺点,我认为可以采用占先式与时间片轮流式同时并行系统,
具体实现方式:
1)
开始状态,所有任务进入准备队列,优先级由高到低出列

2)
每次任务运行时设置相同的时间片段,每中断一次时间片减一,该时间片在等待队伍时间片段中处于最低优先级,时间片为0时,若当前任务还没有完成,不管该任务优先级高低都保存当前任务,进行任务切换,用于任务超时时任务切换,防止任务阻塞,不能跳出;

3)
每个任务可以设置等待时间用于挂起操作,每次中断时间片减一,即让出CPU给其他任务,当时间片为0时,与当前任务比较,优先级高于当前任务则进行任务切换,否则,等待当前任务运行完再操作,多个等待任务可以按照优先级高低进行排列,即等待任务中,优先级高的任务先得到响应;好处是使每个任务,得到最及时的响应,即任务最优化。作者:殷文跃,QQ:844721473

C




C

相关帖子

沙发
singleywy|  楼主 | 2010-9-18 08:25 | 只看该作者
欢迎大家拍砖,不知道分析的是否合理,呵呵

使用特权

评论回复
板凳
machunshui| | 2010-9-18 08:47 | 只看该作者
1)若优先级高的任务因阻塞迟迟不肯放弃CPU,那么优先级低的任务无法得到运行,实时性反而大打折扣;

这和RTOS屁没关系,设计者应该保证任务的合理安排。
实际上优先级高的任务不肯放弃CPU是其运行条件一直满足,而不是所谓的阻塞。(不知此处阻塞何解???)

优先级高的任务放弃CPU的情况是:
1.主动延时放弃
2.等待的外部资源不满足放弃




保证任务安排的合理性是使用者的责任,
不是RTOS设计者的责任

使用特权

评论回复
地板
machunshui| | 2010-9-18 08:48 | 只看该作者
2)
其次是,如果优先级高的任务轮流运行,那么处于底层的低任务将无法得到运行,而实时任务的要求是不能让任何任务无限制的等待,必须要在确定的时间内完成,这与RTOS理论相矛盾;

这仍然是使用者应该自己保证任务运行的合理性。

RTOS确实不是那么好实用的

使用特权

评论回复
5
machunshui| | 2010-9-18 08:51 | 只看该作者
3)
再者是,优先级高的任务必须要在短时间内完成,同时不能够被打断,其他优先级较低任务因等待时间到或者等待信号来临需要唤醒,但如果它的优先级低于当前任务,则无法得到及时响应;

低优先级任务为高优先级任务让路正是可剥夺式RTOS的最基本的特性。

使用特权

评论回复
6
ayb_ice| | 2010-9-18 09:44 | 只看该作者
由于抢先的原因,RTOS又增加了很多功能来解决抢先带来的不良影响
比如: 用信号量解决公共资源的共享问题
还有更严重的优先级倒转问题
死锁问题等
....
正所谓鱼和熊掌不可兼得啊

使用特权

评论回复
7
singleywy|  楼主 | 2010-9-18 10:58 | 只看该作者
3# machunshui
"保证任务安排的合理性是使用者的责任,
不是RTOS设计者的责任" 恩,有道理,任务安排的合理性才是最重要的,
我那个说高优先级任务阻塞,我说错了,是指意外情况,高优先级的任务,按常理应该退出的,结果没有退出,那样的话,如果没有动态处理机制的(即当任务超时一定时间时进行根据当时情况紧急处理),高优先级的任务反而死死的卡在那里,就如同CPU死机一样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

295

帖子

3

粉丝