如果并发线程数为10并且SysTick时间为10mSec,则1个线程执行时间(量子)是多少?

时间:2019-01-07 08:53:41

标签: multithreading operating-system freertos rtos rtx

我目前正在使用RTOS,他们有Time Tick Value = 10 mSecNumber of concurrent running tasks = 10

现在我的问题是,我的单线程时间(量子)应该是多少?

我认为Single Thread Time = Time Tick Value / Number of concurrent running tasks,但我不确定。如果我在这里犯了任何错误,请纠正我。

还有什么因素导致单线程时间的改变?

术语:

  

时间刻度值::可用的CPU时间分为时间   片,RTX内核为每个任务分配一个时间片(默认时间   切片设置为10毫秒)。

     

单线程时间是一个线程在一轮中占用的时间片   如果它们总共有10个任务(线程),则进行调度。

     

并发运行的任务数始终保持不变。它不会   遮盖线等待时间。

我想知道的是,是将10毫秒的时间片分配给单线程还是将它重新划分为10个并发运行线程的10个部分(考虑到我正在使用轮询调度)。

1 个答案:

答案 0 :(得分:2)

对于使用10毫秒时间片的循环调度程序,如果有一个CPU且总是有10个任务;那么实际上总是有一个使用CPU的任务和9个等待使用CPU的任务。在这种情况下,调度程序给任务分配10 ms的CPU时间,然后抢占并执行任务切换到下一个任务,并给它10 ms的时间,依此类推;因此每个任务每100毫秒将获得10毫秒的CPU时间。

  

我想知道的是,是将10毫秒的时间片分配给单线程还是将它重新划分为10个并发运行线程的10个部分(考虑到我正在使用轮询调度)。

对于循环而言,时间片长度是指将执行任何任务的时间-10毫秒片将不会被切成更小的片(否则它将是具有1毫秒时间片的循环,或者不会是轮询-例如会变成“可变时间片”。