OpenEdv-开源电子网

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

对时间片轮转调度的理解

[复制链接]

4

主题

13

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-11-5
在线时间
15 小时
发表于 2016-3-9 22:29:18 | 显示全部楼层 |阅读模式
1金钱
在百度上面看了一篇介绍说 时间片轮转调度的,假如有3个同优先级的任务 A,B,C 同时运行,A的时间片是5ms  , B的是50ms,C的是500ms  那么是不是在没有其它意外抢断情况下,A运行5ms了后,接着CPU处理B运行50ms,接着C就是500MS ,在处理A或者B或者C时候 其中另外2个空闲就绪的是不是没有在运行了呢?

//创建TASK1任务
OSTaskCreate((OS_TCB  * )&Task1_TaskTCB,  
     (CPU_CHAR * )"Task1 task",   
                 (OS_TASK_PTR )task1_task,   
                 (void  * )0,     
                 (OS_PRIO   )TASK1_TASK_PRIO,     
                 (CPU_STK   * )&TASK1_TASK_STK[0],
                 (CPU_STK_SIZE)TASK1_STK_SIZE/10,
                 (CPU_STK_SIZE)TASK1_STK_SIZE,  
                 (OS_MSG_QTY  )0,     
                 (OS_TICK   )500,  //2个时间片,既2*5=10ms     
                 (void    * )0,     
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR  * )&err);   
     
//创建TASK2任务
OSTaskCreate((OS_TCB  * )&Task2_TaskTCB,  
     (CPU_CHAR * )"task2 task",   
                 (OS_TASK_PTR )task2_task,   
                 (void  * )0,     
                 (OS_PRIO   )TASK2_TASK_PRIO,      
                 (CPU_STK   * )&TASK2_TASK_STK[0],
                 (CPU_STK_SIZE)TASK2_STK_SIZE/10,
                 (CPU_STK_SIZE)TASK2_STK_SIZE,  
                 (OS_MSG_QTY  )0,     
                 (OS_TICK   )1, //2个时间片,既2*5=10ms     
                 (void    * )0,   
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR  * )&err);   
OS_CRITICAL_EXIT(); //退出临界区


就比如上面的这段代码?   是用来控制LED1 和LED2灯亮灭的  那实际的运行效果应该是LED1 好 LED2不是同步亮灭的   但是我运行的效果确实依旧同时亮灭
希望给予指点下,这个时间片轮转是什么意思

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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