|
SimpleKernel 1.17.0
|
调度器基类接口 More...
#include <scheduler_base.hpp>


Classes | |
| struct | Stats |
| 调度器统计信息 More... | |
Public Member Functions | |
| virtual auto | Enqueue (TaskControlBlock *task) -> void=0 |
| 将任务加入就绪队列 | |
| virtual auto | Dequeue (TaskControlBlock *task) -> void=0 |
| 从就绪队列移除指定任务 (用于任务阻塞/退出) | |
| virtual auto | PickNext () -> TaskControlBlock *=0 |
| 选择下一个要运行的任务 (不会从队列中移除) | |
| virtual auto | GetQueueSize () const -> size_t=0 |
| 获取就绪队列中的任务数量 (用于负载均衡) | |
| virtual auto | IsEmpty () const -> bool=0 |
| 判断队列是否为空 | |
| virtual auto | OnTick (TaskControlBlock *current) -> bool |
| Tick 更新:每个时钟中断时调用,用于更新调度器状态 | |
| virtual auto | OnTimeSliceExpired (TaskControlBlock *task) -> bool |
| 时间片耗尽处理:当任务时间片用完时调用 | |
| virtual auto | BoostPriority (TaskControlBlock *task, int new_priority) -> void |
| 优先级提升:当任务持有资源时被更高优先级任务等待,提升其优先级 | |
| virtual auto | RestorePriority (TaskControlBlock *task) -> void |
| 优先级恢复:当任务释放资源后,恢复其原始优先级 | |
| virtual auto | OnPreempted (TaskControlBlock *task) -> void |
| 任务被抢占时调用 (从 Running 变为 Ready) | |
| 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 |
Public Attributes | |
| const char * | name {"Unnamed Scheduler"} |
| 调度器名称 | |
Protected Attributes | |
| Stats | stats_ {} |
调度器基类接口
提供统一的调度器接口,支持多种调度策略 (FIFO, Round-Robin, CFS, MLFQ 等) 调度器负责管理就绪队列,选择下一个要运行的任务,以及处理调度相关事件
Definition at line 18 of file scheduler_base.hpp.
|
default |
|
default |
|
default |
|
virtualdefault |
|
inlinevirtual |
优先级提升:当任务持有资源时被更高优先级任务等待,提升其优先级
用于支持优先级继承协议(防止优先级反转)
| task | 需要提升优先级的任务 |
| new_priority | 新的优先级(继承自等待者中的最高优先级) |
Definition at line 101 of file scheduler_base.hpp.

|
pure virtual |
从就绪队列移除指定任务 (用于任务阻塞/退出)
| task | 要移除的任务 |
Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.
|
pure virtual |
将任务加入就绪队列
| task | 要加入的任务 |
Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.
|
pure virtual |
获取就绪队列中的任务数量 (用于负载均衡)
Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.
|
inlinevirtual |
获取调度器统计信息
Definition at line 132 of file scheduler_base.hpp.

|
pure virtual |
判断队列是否为空
Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.
|
inlinevirtual |
任务被抢占时调用 (从 Running 变为 Ready)
用于支持状态跟踪和统计
| task | 被抢占的任务 |
Reimplemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.
Definition at line 119 of file scheduler_base.hpp.
|
inlinevirtual |
任务开始运行时调用 (从 Ready 变为 Running)
| task | 即将运行的任务 |
Reimplemented in IdleScheduler.
Definition at line 126 of file scheduler_base.hpp.

|
inlinevirtual |
Tick 更新:每个时钟中断时调用,用于更新调度器状态
| current | 当前正在运行的任务 |
Reimplemented in CfsScheduler, and IdleScheduler.
Definition at line 74 of file scheduler_base.hpp.

|
inlinevirtual |
时间片耗尽处理:当任务时间片用完时调用
用于支持自定义时间片处理(如 MLFQ 的优先级降级)
| task | 时间片耗尽的任务 |
Reimplemented in IdleScheduler, and RoundRobinScheduler.
Definition at line 88 of file scheduler_base.hpp.

|
default |
|
default |
|
pure virtual |
选择下一个要运行的任务 (不会从队列中移除)
Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.
|
inlinevirtual |
重置统计信息
Definition at line 137 of file scheduler_base.hpp.

|
inlinevirtual |
优先级恢复:当任务释放资源后,恢复其原始优先级
| task | 需要恢复优先级的任务 |
Definition at line 109 of file scheduler_base.hpp.

| const char* SchedulerBase::name {"Unnamed Scheduler"} |
|
protected |
Definition at line 150 of file scheduler_base.hpp.