OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4789|回复: 3

时间片轮转调度实验问题

[复制链接]

83

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1979
金钱
1979
注册时间
2014-7-1
在线时间
187 小时
发表于 2015-11-4 20:30:35 | 显示全部楼层 |阅读模式
5金钱

开发板探索者STM32F407,学习UCOSIII,按照例程做到时间片轮转调度实验。

按照例程结果是对的,现在想看看时间片没起作用是个什么情况,把时间片使能语句屏蔽掉了,运行下来屏幕上的数字还是同步一致的啊,这个实验没看到怎么体现时间片工作和不工作的区别啊

最佳答案

查看完整内容[请看2#楼]

把时间片使能语句屏蔽掉(即:#define OS_CFG_SCHED_ROUND_ROBIN_EN     0u)后,虽然结果似乎与之前相同,但是仔细分析程序代码,还是完全不同: 第一,OS_SchedRoundRobin()代码没有编译,所以程序中肯定没有时间片轮转调度功能。 第二,task1_task和task2_task任务,通过OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err)出让CPU使用权,所以两个同优先级的任务可以轮流工作。 第三, ...
做一个相信自己的人
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2014-8-6
在线时间
8 小时
发表于 2015-11-4 20:30:36 | 显示全部楼层
把时间片使能语句屏蔽掉(即:#define OS_CFG_SCHED_ROUND_ROBIN_EN     0u)后,虽然结果似乎与之前相同,但是仔细分析程序代码,还是完全不同:
第一,OS_SchedRoundRobin()代码没有编译,所以程序中肯定没有时间片轮转调度功能。
第二,task1_task和task2_task任务,通过OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err)出让CPU使用权,所以两个同优先级的任务可以轮流工作。
第三,可以去掉两个任务的OSTimeDlyHMSM(),使之不出让CPU使用权,则同优先级的任务只能有一个工作。但是如果在时间片轮转调度情况下,此时两个任务仍然是可以工作。

从楼主的帖子,引申出一个新问题,如果几个任务优先级相同,又不使用时间片轮转调度,实际应用是否可行呢?
几个任务的关系,就不是抢占式调度了,需要当前任务主动出让CPU使用权,同优先级的下一个任务才能运行。不过由此带来的一个好处是:各任务中可以使用不可重入函数,可以使用一些共享资源,不必担心资源冲突。
回复

使用道具 举报

3

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2015-4-11
在线时间
24 小时
发表于 2016-4-26 22:12:40 | 显示全部楼层
我在时间片轮转调度实验时,结果不对,好像程序跑飞了样
回复

使用道具 举报

83

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1979
金钱
1979
注册时间
2014-7-1
在线时间
187 小时
 楼主| 发表于 2016-4-27 10:45:30 | 显示全部楼层
jnfxt95 发表于 2015-11-5 10:56
把时间片使能语句屏蔽掉(即:#define OS_CFG_SCHED_ROUND_ROBIN_EN     0u) ...

举一反三啊,厉害
做一个相信自己的人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 18:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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