-1

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

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

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

还有哪些因素会导致单线程时间发生变化?

术语:

Time Tick Value:可用的 CPU 时间被划分为时间片,RTX 内核为每个任务分配一个时间片(默认时间片设置为 10 毫秒)。

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

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

我想知道的是,是否将 10 毫秒时间片分配给单个线程,或者将其再次划分为 10 个部分以用于 10 个并发运行的线程(考虑我正在使用循环调度)。

4

1 回答 1

2

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

我想知道的是,是否将 10 毫秒时间片分配给单个线程,或者将其再次划分为 10 个部分以用于 10 个并发运行的线程(考虑我正在使用循环调度)。

对于循环,时间片长度是任何任务将被给予的时间——10 毫秒的片不会被分割成更小的片(否则它将是具有 1 毫秒时间片的循环,或者它不会循环 - 例如将成为“可变时间片”)。

于 2019-01-07T10:28:42.160 回答