SimpleKernel 1.17.0
Loading...
Searching...
No Matches
SchedulerBase Class Referenceabstract

调度器基类接口 More...

#include <scheduler_base.hpp>

Inheritance diagram for SchedulerBase:
Inheritance graph
Collaboration diagram for SchedulerBase:
Collaboration graph

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_ {}
 

Detailed Description

调度器基类接口

提供统一的调度器接口,支持多种调度策略 (FIFO, Round-Robin, CFS, MLFQ 等) 调度器负责管理就绪队列,选择下一个要运行的任务,以及处理调度相关事件

Definition at line 18 of file scheduler_base.hpp.

Constructor & Destructor Documentation

◆ SchedulerBase() [1/3]

SchedulerBase::SchedulerBase ( )
default

◆ SchedulerBase() [2/3]

SchedulerBase::SchedulerBase ( const SchedulerBase )
default

◆ SchedulerBase() [3/3]

SchedulerBase::SchedulerBase ( SchedulerBase &&  )
default

◆ ~SchedulerBase()

virtual SchedulerBase::~SchedulerBase ( )
virtualdefault

Member Function Documentation

◆ BoostPriority()

virtual auto SchedulerBase::BoostPriority ( TaskControlBlock task,
int  new_priority 
) -> void
inlinevirtual

优先级提升:当任务持有资源时被更高优先级任务等待,提升其优先级

用于支持优先级继承协议(防止优先级反转)

Parameters
task需要提升优先级的任务
new_priority新的优先级(继承自等待者中的最高优先级)

Definition at line 101 of file scheduler_base.hpp.

102 {}
Here is the caller graph for this function:

◆ Dequeue()

virtual auto SchedulerBase::Dequeue ( TaskControlBlock task) -> void
pure virtual

从就绪队列移除指定任务 (用于任务阻塞/退出)

Parameters
task要移除的任务

Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.

◆ Enqueue()

virtual auto SchedulerBase::Enqueue ( TaskControlBlock task) -> void
pure virtual

将任务加入就绪队列

Parameters
task要加入的任务

Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.

◆ GetQueueSize()

virtual auto SchedulerBase::GetQueueSize ( ) const -> size_t
pure virtual

获取就绪队列中的任务数量 (用于负载均衡)

Returns
队列中的任务数量

Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.

◆ GetStats()

virtual auto SchedulerBase::GetStats ( ) const -> const Stats&
inlinevirtual

获取调度器统计信息

Returns
统计信息结构体

Definition at line 132 of file scheduler_base.hpp.

132{ return stats_; }
Here is the caller graph for this function:

◆ IsEmpty()

virtual auto SchedulerBase::IsEmpty ( ) const -> bool
pure virtual

判断队列是否为空

Returns
队列为空返回 true,否则返回 false

Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.

◆ OnPreempted()

virtual auto SchedulerBase::OnPreempted ( TaskControlBlock task) -> void
inlinevirtual

任务被抢占时调用 (从 Running 变为 Ready)

用于支持状态跟踪和统计

Parameters
task被抢占的任务

Reimplemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.

Definition at line 119 of file scheduler_base.hpp.

119{}

◆ OnScheduled()

virtual auto SchedulerBase::OnScheduled ( TaskControlBlock task) -> void
inlinevirtual

任务开始运行时调用 (从 Ready 变为 Running)

Parameters
task即将运行的任务

Reimplemented in IdleScheduler.

Definition at line 126 of file scheduler_base.hpp.

126{}
Here is the caller graph for this function:

◆ OnTick()

virtual auto SchedulerBase::OnTick ( TaskControlBlock current) -> bool
inlinevirtual

Tick 更新:每个时钟中断时调用,用于更新调度器状态

Parameters
current当前正在运行的任务
Returns
true 表示需要重新调度
false 表示继续运行当前任务

Reimplemented in CfsScheduler, and IdleScheduler.

Definition at line 74 of file scheduler_base.hpp.

75 {
76 return false;
77 }
Here is the caller graph for this function:

◆ OnTimeSliceExpired()

virtual auto SchedulerBase::OnTimeSliceExpired ( TaskControlBlock task) -> bool
inlinevirtual

时间片耗尽处理:当任务时间片用完时调用

用于支持自定义时间片处理(如 MLFQ 的优先级降级)

Parameters
task时间片耗尽的任务
Returns
true 表示任务需要重新入队
false 表示任务不需要重新入队

Reimplemented in IdleScheduler, and RoundRobinScheduler.

Definition at line 88 of file scheduler_base.hpp.

89 {
90 return true;
91 }
Here is the caller graph for this function:

◆ operator=() [1/2]

auto SchedulerBase::operator= ( const SchedulerBase ) -> SchedulerBase &=default
default

◆ operator=() [2/2]

auto SchedulerBase::operator= ( SchedulerBase &&  ) -> SchedulerBase &=default
default

◆ PickNext()

virtual auto SchedulerBase::PickNext ( ) -> TaskControlBlock *
pure virtual

选择下一个要运行的任务 (不会从队列中移除)

Returns
下一个要运行的任务,如果队列为空则返回 nullptr

Implemented in CfsScheduler, FifoScheduler, IdleScheduler, and RoundRobinScheduler.

◆ ResetStats()

virtual auto SchedulerBase::ResetStats ( ) -> void
inlinevirtual

重置统计信息

Definition at line 137 of file scheduler_base.hpp.

137{ stats_ = {}; }
Here is the caller graph for this function:

◆ RestorePriority()

virtual auto SchedulerBase::RestorePriority ( TaskControlBlock task) -> void
inlinevirtual

优先级恢复:当任务释放资源后,恢复其原始优先级

Parameters
task需要恢复优先级的任务

Definition at line 109 of file scheduler_base.hpp.

110 {}
Here is the caller graph for this function:

Member Data Documentation

◆ name

const char* SchedulerBase::name {"Unnamed Scheduler"}

调度器名称

Definition at line 21 of file scheduler_base.hpp.

21{"Unnamed Scheduler"};

◆ stats_

Stats SchedulerBase::stats_ {}
protected

Definition at line 150 of file scheduler_base.hpp.

150{};

The documentation for this class was generated from the following file: