新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2013-11-5
- 在线时间
- 15 小时
|
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不是同步亮灭的 但是我运行的效果确实依旧同时亮灭
希望给予指点下,这个时间片轮转是什么意思
|
|