2365|1

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

一个简单的问题,欢迎大家指教,多谢。 [复制链接]

(1)在vxworks下单CPU下,当前运行任务发消息通知其它任务或释放信号量,触发队列操作,把阻塞态任务放入就绪队列中,同时内核进行任务调度,
这时是取就绪队列中的排在的第一任务还是取就绪队列中的最高任务与当前运行任务比较?优先级高的任务得到运行?

(2)谁能详细解释下在任务里面调用taskdelay(0)后的过程吗?

最新回复

问题1:在信号量或者消息队列建立时,有一个参数是可以设置“阻塞任务队列排序方式”的,一般有“先进先出”和“基于优先级”两种,不过后者增加了排序的开销。 问题2:taskDelay(n)表示当前任务放弃CPU,在第n个ticks到来时重新申请CPU。下面具体分析:        一般来说,任务获取CPU是按照“时间片”来获取的,比如时间片为20ticks,那么一旦一个任务获得了CPU,就会使用完这20个ticks,除非当前任务自己放弃CPU,比如taskDelay()。如果调用taskDelay(0),那么当前任务放弃CPU,系统调度将该任务放入就绪的任务队列(是按照优先级的高低),如果该任务仍然是最高优先级的就绪任务,那么立刻会被再次分配CPU,不过这一次调度也是有开销的。       关于任务调度的问题,可以看一下相关的资料。       另外,taskDelay()中的参数ticks是系统来维护的,就算任务一直未被调度,ticks也是被计算的。  详情 回复 发表于 2009-3-20 13:08
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
问题1:在信号量或者消息队列建立时,有一个参数是可以设置“阻塞任务队列排序方式”的,一般有“先进先出”和“基于优先级”两种,不过后者增加了排序的开销。
问题2:taskDelay(n)表示当前任务放弃CPU,在第n个ticks到来时重新申请CPU。下面具体分析:
       一般来说,任务获取CPU是按照“时间片”来获取的,比如时间片为20ticks,那么一旦一个任务获得了CPU,就会使用完这20个ticks,除非当前任务自己放弃CPU,比如taskDelay()。如果调用taskDelay(0),那么当前任务放弃CPU,系统调度将该任务放入就绪的任务队列(是按照优先级的高低),如果该任务仍然是最高优先级的就绪任务,那么立刻会被再次分配CPU,不过这一次调度也是有开销的。
      关于任务调度的问题,可以看一下相关的资料。
      另外,taskDelay()中的参数ticks是系统来维护的,就算任务一直未被调度,ticks也是被计算的。
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表