|
SimpleKernel 1.17.0
|
Round-Robin 调度器 More...
#include <rr_scheduler.hpp>


Public Member Functions | |
| auto | Enqueue (TaskControlBlock *task) -> void override |
| 将任务加入就绪队列尾部 | |
| auto | Dequeue (TaskControlBlock *task) -> void override |
| 从就绪队列中移除指定任务 | |
| auto | PickNext () -> TaskControlBlock *override |
| 选择下一个要运行的任务 | |
| auto | GetQueueSize () const -> size_t override |
| 获取就绪队列大小 | |
| auto | IsEmpty () const -> bool override |
| 判断队列是否为空 | |
| auto | OnTimeSliceExpired (TaskControlBlock *task) -> bool override |
| 时间片耗尽处理 | |
| auto | OnPreempted (TaskControlBlock *task) -> void override |
| 任务被抢占时调用 | |
构造/析构函数 | |
| RoundRobinScheduler ()=default | |
| RoundRobinScheduler (const RoundRobinScheduler &)=delete | |
| RoundRobinScheduler (RoundRobinScheduler &&)=delete | |
| auto | operator= (const RoundRobinScheduler &) -> RoundRobinScheduler &=delete |
| auto | operator= (RoundRobinScheduler &&) -> RoundRobinScheduler &=delete |
| ~RoundRobinScheduler () override=default | |
Public Member Functions inherited from SchedulerBase | |
| virtual auto | OnTick (TaskControlBlock *current) -> bool |
| Tick 更新:每个时钟中断时调用,用于更新调度器状态 | |
| virtual auto | BoostPriority (TaskControlBlock *task, int new_priority) -> void |
| 优先级提升:当任务持有资源时被更高优先级任务等待,提升其优先级 | |
| virtual auto | RestorePriority (TaskControlBlock *task) -> void |
| 优先级恢复:当任务释放资源后,恢复其原始优先级 | |
| virtual auto | OnScheduled (TaskControlBlock *task) -> void |
| 任务开始运行时调用 (从 Ready 变为 Running) | |
| virtual auto | GetStats () const -> const Stats & |
| 获取调度器统计信息 | |
| virtual auto | ResetStats () -> void |
| 重置统计信息 | |
| SchedulerBase ()=default | |
| SchedulerBase (const SchedulerBase &)=default | |
| SchedulerBase (SchedulerBase &&)=default | |
| auto | operator= (const SchedulerBase &) -> SchedulerBase &=default |
| auto | operator= (SchedulerBase &&) -> SchedulerBase &=default |
| virtual | ~SchedulerBase ()=default |
Private Attributes | |
| etl::list< TaskControlBlock *, kernel::config::kMaxReadyTasks > | ready_queue_ |
| 就绪队列 (双向链表,支持从头部取、向尾部放,固定容量) | |
Additional Inherited Members | |
Public Attributes inherited from SchedulerBase | |
| const char * | name {"Unnamed Scheduler"} |
| 调度器名称 | |
Protected Attributes inherited from SchedulerBase | |
| Stats | stats_ {} |
Round-Robin 调度器
时间片轮转调度器,所有任务按照 FIFO 顺序排队。 每个任务获得相同的时间片,时间片用完后放回队列尾部。
Definition at line 20 of file rr_scheduler.hpp.
|
default |
|
delete |
|
delete |
|
overridedefault |
|
inlineoverridevirtual |
从就绪队列中移除指定任务
| task | 要移除的任务控制块指针 |
用于任务主动退出或被阻塞等场景。
Implements SchedulerBase.
Definition at line 49 of file rr_scheduler.hpp.

|
inlineoverridevirtual |
将任务加入就绪队列尾部
| task | 任务控制块指针 |
重置任务的时间片并将其加入队列尾部,实现公平的时间片轮转。
Implements SchedulerBase.
Definition at line 28 of file rr_scheduler.hpp.


|
inlineoverridevirtual |
获取就绪队列大小
Implements SchedulerBase.
Definition at line 83 of file rr_scheduler.hpp.

|
inlineoverridevirtual |
判断队列是否为空
Implements SchedulerBase.
Definition at line 91 of file rr_scheduler.hpp.

|
inlineoverridevirtual |
任务被抢占时调用
| task | 被抢占的任务 |
Reimplemented from SchedulerBase.
Definition at line 116 of file rr_scheduler.hpp.

|
inlineoverridevirtual |
时间片耗尽处理
| task | 时间片耗尽的任务 |
Round-Robin 调度器在时间片耗尽时重置时间片并将任务放回队列尾部。
Reimplemented from SchedulerBase.
Definition at line 102 of file rr_scheduler.hpp.

|
delete |
|
delete |
|
inlineoverridevirtual |
选择下一个要运行的任务
从队列头部取出任务,实现 Round-Robin 轮转。
Implements SchedulerBase.
Definition at line 69 of file rr_scheduler.hpp.

|
private |
就绪队列 (双向链表,支持从头部取、向尾部放,固定容量)
Definition at line 132 of file rr_scheduler.hpp.