刚刚接触ucos,想问一下“时间片”这个概念,不知道我这样理解对不对

2019-10-15 02:03发布

时间片,我的理解就是,比如时间片为5ms,那么系统中每个任务就是无限循环的每次执行5ms吗?
比如说现在有5个任务,那么就是第一个任务执行5ms,然后保存堆栈,退出来,再让第二个任务执行5ms,然后保存堆栈退出来,然后第三个。。。第四个。。。第五个。。。?那这样的话我是不是可以理解为,这还是一个大的单任务?无非就是这个单任务无限循环的将每个程序模块都能有时间去执行?

这样的话,在这5ms内执行一个任务时,其他任务是没有运行的吧?就是说每个5ms内只有一个任务在运行?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
密耳
1楼-- · 2019-10-15 03:19
和上位机的多线程编程一个道理,某一时刻只有一个线程在工作。调度器协调不同的任务抢占执行,只不过是避免了顺序执行任务的必要的延时。其实你可以把裸机的每个中断都看出uc的多线程。
东北小辉辉
2楼-- · 2019-10-15 08:51
不熟悉RTOS,但是时间片在裸机中,也有应用,比如时间触发+状态机的模式。
说一下我的理解。
这个5ms应该指的是任务调度的周期,而不是每个任务运行的时间。
可抢占内核的话,每隔5ms,就去检查,是否有更高的优先级任务就绪,有的话,就保存当前任务的现场,然后恢复更高优先级的现场,然后跳到高优先级的任务执行。
在裸机中,划分好时间片以后,要进行状态切换,我感觉也类似于任务调度,但是由于裸机是共享堆栈,所以每个状态的运行时间要尽可能的短。

一周热门 更多>