mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-12 10:06:47 +00:00
## PR:重写调度模块 --- ### 完成的部分 - 实现cfs调度策略 - 搭建框架,后续功能可以迭代开发 - 目前能跑,未测试性能 ### 需要后续接力的部分 - 实现组内调度(task_group) - 实现跨核负载均衡(pelt算法) - 接入sysfs,实现参数动态调节(sched_stat等) - nice值以及priority等参数的设置及调优
68 lines
1.7 KiB
Rust
68 lines
1.7 KiB
Rust
use super::Scheduler;
|
||
|
||
pub struct IdleScheduler;
|
||
|
||
impl Scheduler for IdleScheduler {
|
||
fn enqueue(
|
||
_rq: &mut super::CpuRunQueue,
|
||
_pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>,
|
||
_flags: super::EnqueueFlag,
|
||
) {
|
||
// idle已经被设置,无需入队
|
||
}
|
||
|
||
fn dequeue(
|
||
_rq: &mut super::CpuRunQueue,
|
||
_pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>,
|
||
_flags: super::DequeueFlag,
|
||
) {
|
||
}
|
||
|
||
fn yield_task(_rq: &mut super::CpuRunQueue) {}
|
||
|
||
fn check_preempt_currnet(
|
||
rq: &mut super::CpuRunQueue,
|
||
_pcb: &alloc::sync::Arc<crate::process::ProcessControlBlock>,
|
||
_flags: super::WakeupFlags,
|
||
) {
|
||
rq.resched_current();
|
||
}
|
||
|
||
fn pick_task(
|
||
_rq: &mut super::CpuRunQueue,
|
||
) -> Option<alloc::sync::Arc<crate::process::ProcessControlBlock>> {
|
||
panic!()
|
||
}
|
||
|
||
/// ### 表示idle被选中
|
||
///
|
||
/// 主要做一些统计工作
|
||
fn pick_next_task(
|
||
_rq: &mut super::CpuRunQueue,
|
||
_pcb: Option<alloc::sync::Arc<crate::process::ProcessControlBlock>>,
|
||
) -> Option<alloc::sync::Arc<crate::process::ProcessControlBlock>> {
|
||
// TODO: Fixme
|
||
// 做一些统计工作
|
||
None
|
||
}
|
||
|
||
fn tick(
|
||
_rq: &mut super::CpuRunQueue,
|
||
_pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>,
|
||
_queued: bool,
|
||
) {
|
||
// Nothing to do
|
||
}
|
||
|
||
fn task_fork(_pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>) {
|
||
todo!()
|
||
}
|
||
|
||
fn put_prev_task(
|
||
_rq: &mut super::CpuRunQueue,
|
||
_prev: alloc::sync::Arc<crate::process::ProcessControlBlock>,
|
||
) {
|
||
// Nothing todo
|
||
}
|
||
}
|