一、时间片原理介绍
1.1、什么是时间片?
时间片是操作系统分配给每个正在运行的进程(或线程)的一个固定时间段,在这个时间段内,进程可以独占CPU并执行其任务。时间片的主要目的是确保所有处于就绪状态的进程都能获得公平的CPU时间,避免某些进程长时间占用CPU。在时间片轮转调度中,系统会维护一个就绪队列,所有就绪进程按照到达的顺序排队等待执行。操作系统按照队列顺序依次分配时间片,每个进程在获得CPU后开始执行,直到其时间片用完。
时间片的长度通常由操作系统的调度器决定,这个长度可以根据系统的性能要求和进程的优先级进行调整。较短的时间片可以提供更快的响应时间,但会增加调度的开销;较长的时间片可以减少调度次数,但可能会降低系统的响应性。在OneOS中,默认一个时间片等于SysTick(滴答定时器)中断周期。
OneOS支持多个任务同时拥有一个优先级,在OneOS中允许一个任务运行一段时间(时间片)后让出CPU的使用权,让拥有同优先级的下一个任务运行,这种任务调度方法就是时间片轮转调度。下图展示了运行在同一优先级下的执行时间图,在优先级N下有3个就绪的任务,我们将时间片划分为3个时钟节拍。

(1) 任务3正在运行 (2) 任务3的时间片用完
(3) OneOS切换到任务1,任务1是优先级 N下的下一个就绪任务。
(4) 任务1连续运行至时间片用完。
(5) OneOS切换到任务2,任务2是优先级 N下的下一个就绪任务。
(6) 切换任务2。 (7) 任务2连续运行至时间片用完。
(8) OneOS切换到任务3,任务3是优先级 N下的下一个就绪任务。
(9) 切换任务3。 (10) 任务3运行
1.2、如何设置时间片?
工程目录下,右键打开OneOS-Cube并输入menuconfig。进入系统配置中修改Task time slice参数即可,OneOS默认值为10(表示有10个时间片)。影响时间片长度的还有Tick frequency(Hz),默认值为100(表示一个时间片长度为10ms)。

2万+

被折叠的 条评论
为什么被折叠?



