diff --git a/kernel/src/sched/cfs.rs b/kernel/src/sched/cfs.rs index da9dc6fe..b70ebf1e 100644 --- a/kernel/src/sched/cfs.rs +++ b/kernel/src/sched/cfs.rs @@ -137,9 +137,14 @@ impl SchedulerCFS { fn update_cpu_exec_proc_jiffies( _priority: SchedPriority, cfs_queue: &mut CFSQueue, + is_idle: bool, ) -> &mut CFSQueue { // todo: 引入调度周期以及所有进程的优先权进行计算,然后设置分配给进程的可执行时间 - cfs_queue.cpu_exec_proc_jiffies = 10; + if !is_idle { + cfs_queue.cpu_exec_proc_jiffies = 10; + } else { + cfs_queue.cpu_exec_proc_jiffies = 0; + } return cfs_queue; } @@ -236,6 +241,7 @@ impl Scheduler for SchedulerCFS { SchedulerCFS::update_cpu_exec_proc_jiffies( proc.sched_info().priority(), current_cpu_queue, + Arc::ptr_eq(&proc, ¤t_cpu_queue.idle_pcb), ); } @@ -251,6 +257,7 @@ impl Scheduler for SchedulerCFS { SchedulerCFS::update_cpu_exec_proc_jiffies( ProcessManager::current_pcb().sched_info().priority(), current_cpu_queue, + Arc::ptr_eq(&proc, ¤t_cpu_queue.idle_pcb), ); // kdebug!("cpu:{:?}",current_cpu_id); }